Skip to end of metadata
Go to start of metadata

Plugin Information

View xUnit on the plugin site for more information.

This plugin makes it possible to publish the test results of an execution of a testing tool in Jenkins.

Features

  • Records xUnit tests
  • Mark the build unstable or fail according to threshold values

Supported tools

Embedded tools

* JUnit (supported schema are Ant junit and Maven Surefire)
* AUnit
* MSTest (imported from MSTest Plugin)
* NUnit (imported from NUnit Plugin)
* UnitTest++
* Boost Test Library
* PHPUnit
* Free Pascal Unit
* CppUnit
* MbUnit
* Googletest
* EmbUnit
* gtester/glib
QTestLib

Other plugins as an extension of the xUnit plugin:

* Gallio (Gallio plugin)
* Parasoft C++Test tool (Cpptest Plugin)
* JSUnit (JSUnit Plugin)
* JBehave
* TestComplete (TestComplete xUnit Plugin)

External contributions

For each xUnit tool, an embedded style sheet is used. However, the plugin also enables you to use a custom style sheet for your own tool such as :
* WebUI
* Ranorex

Configuration

Job Configuration

* Execute your testing tools manually or as a step of your build chain
* Give a pattern that specifies your test results

Provide User XSL

For tools using a stylesheet to convert into JUnit files, you are able to use your own XSL at Jenkins level.
Specify your XSLs in the JENKINS_HOME/useContent directory with the following convention
userContent/xunit/[toolName]/[version]/[your_xsl].

For example:
userContent/xunit/AUnit/3.1.1/aunit-to-junit.xsl

Note: The tool name and the version are taken from the label in the combo box from the UI.
If the tool doesn't have a version, do not create a version directory.

xUnit Architecture

Global Architecture

When this plugin is installed and configured, Jenkins can transform test result reports produced by different testing tools into JUnit test result format. The JUnit tests can then be recorded by Jenkins.
Jenkins can provide useful information about test results, such as the historical test result trend, web UI for viewing test reports, tracking failures, and so on.

Under the hood, xUnit Jenkins plugin delegates processing to DTKit.

DTKit Activities for XUnit

DTKit Packaging

Working with Pipelines

It is also possible to set an xUnit configuration in a pipeline job, but is somewhat more verbose.

For example, creating a boost pipeline (declarative) with the same configuration as above would be:

Example of pipeline
pipeline {
    agent any
    stages {
        stage('Test'){
            steps {
                sh "run_tests.bash"
            }
        }
    }
    post {
        always{
            xunit (
                thresholds: [ skipped(failureThreshold: '0'), failed(failureThreshold: '0') ],
                tools: [ BoostTest(pattern: 'boost/*.xml') ])
            )
        }
    }
 }

Releases

Version 2.2.3

Bugfixes

  • JENKINS-53034 Failure when validate NUnit 2.x reports generated by NUnit 3.x console (nfalco79)
  • JENKINS-53036 NPE after upgrade to 2.2.1 when run publisher (nfalco79)

Version 2.2.1

Improvements

  • JENKINS-51645 Add support for claims plugin in xUnit (nfalco79 to Arnaud)
  • JENKINS-24224 improve xunit plugin with test-stability plugin (nfalco79 to Arnaud)

Bugfixes

  • JENKINS-52908 Newlines get ignored in failure message and possibly stack trace when uploading xUnitDotNet xml results (nfalco79)

Version 2.1.0

Improvements

  • JENKINS-32920 Support for URL for stylesheet in Custom Tool (nfalco79)

Bugfixes

  • JENKINS-52512 Builds on slave node fails when there is no report file even if set to do not fail (nfalco79)
  • JENKINS-52400 xUnit miss to add required attributes when converts Valgrind reports (nfalco79)

Version 2.0.4

Bugfixes

  • JENKINS-52327 java.nio.file.AccessDeniedException on Publish xunit Custom tool test report (nfalco79 to greghoeppner)
  • JENKINS-52202 xUnit reports "All test reports are empty" in case of parallel steps but reports are not empty (nfalco79)
  • JENKINS-52253 xUnit in case of multiple tool type processes only the first one (nfalco79)
  • JENKINS-52173 xUnit fails when converting gtester/glib2 input to junit format (nfalco79)

Version 2.0.3

Bugfixes

  • JENKINS-51604 XPathExeption when parsing QtTestLib Reports when a Test contains multiple Incidents (nfalco79)
  • JENKINS-27860 Build does not stop if it is marked as Failure when the opportune option is enabled (nfalco79)
  • JENKINS-47194 xUnit should not consider report generated by other xUnit step (nfalco79)
  • JENKINS-52107 Convertion exception for NUnit 2.1 reports because nunit-version attribute not contains only digits (nfalco79)

Version 2.0.2

Bugfixes

  • JENKINS-41093 For Unittest++ xml, only the first failure of each test case is recognized (nfalco79)
  • JENKINS-51767 xUnit 2.x XSD does not validate NUnit 2.x XML report file (nfalco79)
  • JENKINS-51797 xUnit.Net v2 parse error when time attribute is missing (nfalco79)
  • JENKINS-51798 GoogleTest parse error when time attribute is missing (nfalco79)

Version 2.0.1

Improvements

  • Improved GoogleTest, FPCUnit, CppTest XSLT to produce a report more compliant with surefire XSD

Bugfixes

  • JENKINS-51561 xUnit plugin fails to parse NUnit 2 report format generated by NUnit 3.6.0.0 (nfalco79)
  • JENKINS-51465 Exception in XSL Transformation cause JEP-200 (nfalco79)
  • JENKINS-51481 Parse error occur when NUnit report have categories (nfalco79)
  • JENKINS-26227 xUnit plugin doesn't use OS culture when reads time values in xUnit.net output (nfalco79)
  • JENKINS-12417 xUnit problems with CppTest reports generated with default options (nfalco79)
  • JENKINS-28871 CppTest 9.5 report file seems not valid for xUnit when no tests was executed (nfalco79)

Version 2.0.0

Breaking Changes

I have introduce some schemas validation becase the large number of issues opened to xUnit plugin. Those issues are caused by custom attributes or XML DOM in the report generated by some user/tools report logger also if they declare to produce a valid report file. This cause me to spend a lot of time to investigate what is right and what is wrong and how to implement the XSL without it goes in error during transformation. 

In case you are using a non java tools that declares to produce a JUnit compatible report, ensure the report respects one of the widely used supported schemas. If not than select as test type the build step "Custom Tool" and provide a XSL as described here.

  • NUnit 2.x (2.0 ~ 2.6) schema validation from official distribution.

In case you are using a tools that declares to produce a NUnit 2 compatible report, ensure the report respects the official schemas. If not than select as test type the build step "Custom Tool" and provide a XSL as described here.

Improvements

  • Improved MSTest, MbUnit, AUnit, NUnit, QtTest XSLT to produce a report more compliant with surefire XSD
  • Change UI rendering of the report tool and clarify the pattern description
  • JENKINS-37611 Add support for pipeline using @Symbol annotation to xunit and its parameters (nfalco79)

Bugfixes

  • JENKINS-42715 xUnit does not support PHPUnit 5.x skipped attribute (nfalco79 to ray)
  • JENKINS-47194 xUnit should not consider report generated by other xUnit step (nfalco79)
  • JENKINS-10911 xUnit not detecting Ignored MSTest and NUnit Tests (nfalco79)
  • JENKINS-51347 Test Status "notrun" being reported as "failed" test (nfalco79)
  • JENKINS-13113 xUnit plugins detects MSTEST "NotExecuted" as successed instead of skipped (nfalco79)

Version 1.104

Improvements

  • JENKINS-33450 Support for NUnit3 which uses a different XML format by NUnit2 (nfalco79 to alexschwantes)

  • JENKINS-50658 Fix xsd to be compliant with surefire report and rerun option (nfalco79 to alemorato)

Bugfixes

  • JENKINS-48945 Testreport lacks of those test in which the hashcode of two different testsuite name coincide (nfalco79)
  • JENKINS-33385 Testresult doesn't show test name in case the package is empty (nfalco79 to Zenger Alexander)

  • JENKINS-51056 xUnit throws NPE when no threshold was specified (nfalco79)
  • JENKINS-35660 QTestLib time information is lost (nfalco79 to kpop)

Version 1.103

Improvements

  • Move plugin to pipeline so that commits and pull request could be checked for test failure

Bugfixes

  • JENKINS-28471 xUnit should compare test results to last build where tests was recorded to calculate correctly thresholds (nfalco79 to Jimilian)
  • JENKINS-50378 Skipped count percentage is affected by integer rounding (nfalco79 to pauljohnston2009)
  • JENKINS-42031 xUnit Plugin Does Not Parse Some Boost 1.63 Test Reports (nfalco79 to aschet)
  • Relax BoostTest code line validation (nfalco79 to penberg)

Version 1.102

  • Ensure testuite time attribute is valid for NUnit

Version 1.101

Version 1.100

  • Fix JENKINS-30812 - added parsing for gtest errors so that a failure to run a test is considered a test failure
  • Fix JENKINS-27240 - Workflow integration XUnit as a SimpleBuildSte

 

54 Comments

  1. I'm using boost test with this plugin and get the following output:

    [xUnit] Starting to record.
    [xUnit] Can't create the path D:\Develop\generatedJUnitFiles. Maybe the directory already exists.
    [xUnit] [BoostTest-1.35.0 (default)] - Processing 5 files with the pattern 'boost-test-*.xml' relative to 'D:\Develop'.
    [xUnit] [INFO] - Converting 'D:\Develop\boost-test-Module1.xml' .
    [xUnit] [INFO] - Converting 'D:\Develop\boost-test-Module2.xml' .
    [xUnit] [INFO] - Converting 'D:\Develop\boost-test-Module3.xml' .
    [xUnit] [INFO] - Converting 'D:\Develop\boost-test-Module4.xml' .
    [xUnit] [INFO] - Converting 'D:\Develop\boost-test-Module5.xml' .
    [xUnit] The plugin hasn't been performed correctly: None of the test reports contained any result
    Finished: FAILURE
    My boost test XML files do contains results, and lots of them. An example of a converted file is:

    <testsuite tests="2" errors="0" failures="0" name="Master Test Suite" skipped="0"/>

    I'm using boost 1.39 but I don't think that's the problem otherwise the conversion would fail, surely? I'm using 1.6 of the xunit plugin on Hudson 1.371.

    As a side note, I would have loved to have created a bug report for this, but Jira is less than obvious on how to do that.

  2. What boost.test command line options I should use to create correct xml?

    1. run_tests --output_format=XML --log_level=all --report_level=no

      1. It also works with --log_level=test_suite, which may be preferable. You don't get extra lines for every time boost checks something. This was breaking our build since one of our tests involved the checking of a large collections of points which lead to an XML file of 150MB.

  3. hi,

    I was wondering if xunit is gonna give a support for google test.

    Thank you

    1. Google Test produces native JUnit reports.
      Therefore xUnit plugin is not needed (xUnit plug-in is aimed at record non JUnit reports in Jenkins)
      For recording Google test reports, you have to use 'Publish JUnit test result report' in post-build actions

    2. I really could use this too.

      I have to use Junit just to publish Gtest results, and then manage 2 plugins, Junit and this.

      And Junit does not have Thresholds definition.

  4. Hi, I just used xUnit for my phpunit report. But if the result of the phpunit test is fail or error, there will be a xunit exception with message java.lang.NumberFormatException: For input string: "" thrown when build the job.

    I saw an related bug in JIRA about this issue but the status is still unresolved.

    Anyone have any ideas about this?

    Thanks

    1. Found the workaround way to avoid this exception:

      Enter number in all the Failed and Error Thresholds fields instead of entering any strings or leave it empty in the configure page of the project.

      1. It was a bug. You can avoid the workaround by downloading the latest version.
        Thanks.

        1. just updated, thanks!

  5. What are the correct settings for the Logger setup? The provided information seams to be outdated.

    Tried:

    • com.thalesgroup.hudson.plugins.xunit.service.XUnitLog
    • com.thalesgroup.hudson.plugins.xunit.service.XUnitConversionService
    • com.thalesgroup.hudson.plugins.xunit.service.XUnitValidationService
    • com.thalesgroup.hudson.plugins.xunit.service.XUnitService
    • * XUnitService

    Using Jenkins 1.455 and xUnit plugin 1.40

    1. Ok, trial and error gave me the solution, it is just:

      • XUnitService
  6. Hello.

    Why my build is recognized as unstable while no metric exceeded threshold value? Total/New set to 50/10, but Failed/New Failures is 38/-7 (+1). I cannot understand it from my logs:

    [xUnit] [INFO] - Starting to record.
    [xUnit] [INFO] - Processing JUnit
    [xUnit] [INFO] - [JUnit] - 31 test report file(s) were found with the pattern '**/target/surefire-reports/*.xml' relative to 'c:\opt\Jenkins\jobs\project-unit-tests\workspace' for the testing framework 'JUnit'.
    [xUnit] [INFO] - Check 'Failed Tests' threshold.
    [xUnit] [INFO] - Check 'Skipped Tests' threshold.
    [xUnit] [INFO] - Setting the build status to UNSTABLE
    [xUnit] [INFO] - Stopping recording.
    1. When the xUnit plugin changes the build status (Unstable or Failure), there is a plugin message displayed in the console (maybe except a case with a bug). Therefore, I think the build is set to UNSTABLE by an other plugin.
      I suggest you should try to isolate the problem in your context (maybe by deactivating temporarily the xUnit plugin and check the build status of a new build).

      1. Look's like it is maven-multi-module issue. I've turned off xUnit. My project has only 1 module. This module contains unit-tests. With turned off xUnit test report for module still generated and probably made my build unstable.

        But when I used precent threshold instead of number threshold I got stable build.

        Also I have known issue that test reports haven't aggregated from module to parent.

        Generally, I still confused with jenkins and multi-module reporting :(

  7. Would it be possible that the new version of xUnit causes the job configuration store functionality to crash? If I update to 1.47 I cannot "save" my configurations anymore.

    And then the other question is: how can I get an old release of this plugin? (this is probably a silly question)

    1. wanna the old version too

    2. You are able to find all xUnit Jenkins plugin versions here: http://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/xunit/
      What is your issue when you save your job configuration?

  8. We run 1000's of tests per day and get the following random result in a few tests per day. generatedJUnitFiles DOES exist yet the plugin occasionally does not find the directory.
    xUnit INFO - Starting to record.
    xUnit INFO - Processing JUnit
    xUnit INFO - JUnit - 2 test report file(s) were found with the pattern 'test_artifacts/*/.xml' relative to '/home/jenkins/tests/workspace/UEFI_SCT_Ele@2' for the testing framework 'JUnit'.
    ERROR: Publisher org.jenkinsci.plugins.xunit.XUnitPublisher aborted due to exception
    /home/jenkins/tests/workspace/UEFI_SCT_Ele@2/generatedJUnitFiles does not exist.
    at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:483)
    at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:460)
    at org.jenkinsci.plugins.xunit.XUnitPublisher$4.invoke(XUnitPublisher.java:292)
    at org.jenkinsci.plugins.xunit.XUnitPublisher$4.invoke(XUnitPublisher.java:287)
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2308)
    at hudson.remoting.UserRequest.perform(UserRequest.java:118)
    at hudson.remoting.UserRequest.perform(UserRequest.java:48)
    at hudson.remoting.Request$2.run(Request.java:326)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

  9. Hi,

    it seems that current version of plugin only counts total number of failed tests, so that if there are 5 tests that failed, and on next run another set of 5 tests fails, it will not be able to detect a regression case here. 

    Is it possible to overcome this?

    1. Please could raise a new bug in the Jira tracker with your Jenkins job configuration (condfig.xml) and your test result file?
      Thanks in advance.

  10. I am having an unsettling problem with xUnit and I need advice (or comforting!). Perhaps I need to do something different.

    Installed and using xUnit ok (using PHPUnit and VisualPHPUnit), and I get test case results in the job's (project's) test results. 

    But I do not see all failures. Some test case failures do not show up in test results. By inspecting the XML result files (or VisualPHPUnit files), I find more failures than are listed in project's test results. 

    Here's the configuration: I have a text file, it has a list of unit test filenames along with an argument of an IP address of a system that the unit test needs to know about. Using my Jenkins project's configuration script, I loop through the file to run the unit tests specified and the unit test does its thing. All ok I would think, all test runs etc. (Since the systems specified by IP addresses have different configurations, running the unit test multiple times is needed.) Here is an example:

    unitTestA 192.168.1.1
    unitTestB 192.168.1.1
    unitTestC 192.168.1.1
    unitTestA 192.168.1.2
    unitTestC 192.168.1.2
    

    What I suspect is happening is that if a unit test fails, only the last failure of that specific unit test is reported by xUnit as a failure. So in my example, if for example unitTestA fails for both 192.168.1.1 and on 192.168.1.2, only the last one is reported as a failure.

    So my question is, how do I get xUnit to report all failures even if the same unit test is run multiple times albeit with different arguments?

    Thanks for any advice.

    1. xunit plugin is aimed only at transforming of xUnit report format (PHP in your use case) into a JUnit report (Jenkins compatible).
      Please look at your initial report file and if you obsevre some lost data, please report an issue.

      1. Thanks for your reply.

        I created Jira https://issues.jenkins-ci.org/browse/JENKINS-17784

        When I looked into the logs, it appears that some of the generatedJUnitFiles did not end up in the junitResult.xml results.

  11. Hi,

    we use the XUnit plugin to analyze our custom tools TestResult.xml file, which implements the JUnit DTD.

    All was fine till the last Update (1.60).

    Now we get the following:Jun 28, 2013 12:48:53 PM com.thalesgroup.hudson.plugins.xunit.service.XUnitService errorSystemLogger
    SEVERE: xUnit - The result file 'C:\Jenkins\Jenkins\workspace\asdfad\Junit\TestResult.xml' for the metric 'JUnit' is not valid. The result file has been skipped.

    Jun 28, 2013 12:48:53 PM com.thalesgroup.hudson.plugins.xunit.service.XUnitService warningSystemLogger
    WARNING: xUnit - The file 'C:\Jenkins\Jenkins\workspace\asdfad\Junit\TestResult.xml' is an invalid file.

    Jun 28, 2013 12:48:53 PM com.thalesgroup.hudson.plugins.xunit.service.XUnitService infoSystemLogger
    INFO: xUnit - JUnit - 1 test report file(s) were found with the pattern 'Junit/*.xml' relative to 'C:\Jenkins\Jenkins\workspace\asdfad' for the testing framework 'JUnit'.

    Regarding your change log Version 1.60 seem to use a different version of XML schema for the Junit file, but Google didn't help me for the term "JUnit 6".

    So question 1:

    • What XML schema do you use to validate the Junit files against? (hyperlink would be fine (wink))

    And question 2:

    • How can i get a older (working) revision of the xUnit plugin e.g. 1.52 ?

    Thanx in advance

    1. Sorry, is was halfblind that friday ;-)

      regarding question 2 I found the answer myself: http://updates.jenkins-ci.org/download/plugins/xunit/

      Question 1 is still open

  12. I am new to unit testing.  I am using CppUTest with C++.

    I expected xUnit Plugin to publish hyperlinks to the failed test file and line number.  The Cppcheck Plugin does this nicely.  Clicking on the link views the source file with offending line highlighted.

    Is hyperlink to test failure source a feature of xUnit?  If not has anyone figured out a way to accomplish this?  

    Thanks in advance,

    -Ed

    <pre>
    <testsuite errors="0" failures="1" hostname="localhost" name="Die" tests="7" time="0.177" timestamp="2013-12-18T16:53:29">
    <testcase classname="Die" name="ForceUnitTestFailure" time="0.000">
    <failure message="/absolute/path/to/test/source/dicegame/src/test/die_test.cpp:35: CHECK(false) failed" type="AssertionFailedError">
    </failure>
    </testcase>
    <system-out></system-out>
    <system-err></system-err>
    </testsuite>
    </pre>

  13. The plugin has been working perfectly fine until several hours ago.

    [ xUnit ] [ INFO ] - Starting to record.
    [ xUnit ] [ INFO ] - Processing Custom Tool
    [ xUnit ] [ INFO ] - Custom Tool - 1 test report file(s) were found with the pattern 'TestResults/*.trx' relative to 'D:\Jenkins_Slave\workspace\MobileService' for the testing framework 'Custom Tool'.
    [ xUnit ] [ INFO ] - Check 'Failed Tests' threshold.
    [ xUnit ] [ INFO ] - Check 'Skipped Tests' threshold.
    [ xUnit ] [ INFO ] - Setting the build status to FAILURE
    [ xUnit ] [ INFO ] - Stopping recording.

    All of sudden a Jenkins job started failing with the message above.

    I noticed that a number of skipped tests were just less than 200, so I set the threshold for the failure of skipped test to 300 enough cover that thinking maybe it's causing the job to fail.

    Anyone has encountered a similar issue before?  

    1. It was actually fxcop plugin that failed it, but xUnit seems to have cascaded the build status and set it. Now everything looks good. 

  14. Hi all, 

    I use this plugin for some tests that produce acsii colors,

    I use https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin to view colored results in console.

    but then when I come to review same logs in xunit xmls i can not see any colours, but i do see escape symbols.

    Is there a way to make it possible to see colors xunit results?

  15. I want this plugin not to fail the job if there are no test reports. I added Junit tests and I thought that "Skip if there are no test files" is intended to help me with this, but this checkbox doesn't save it's status after I save changes in the job. I even changed false to true in configuration.xml file on the Jenkins server but it didn't help and no changes in the plugin configuration. I use Jenkins 1.541. Could you please help with this?

  16. I want this plugin not to fail the job if there are no test reports. I added Junit tests and I thought that "Skip if there are no test files" is intended to help me with this, but this checkbox doesn't save it's status after I save changes in the job. I even changed false to true in configuration.xml file on the Jenkins server but it didn't help and no changes in the plugin configuration. I use Jenkins 1.541. Could you please help with this?

    1. It's a regression with the last version.
      Fixed for now.

      1. Just updatet the plugin but still no success:

        [xUnit] [INFO] - [JUnit] - No test report file(s) were found with the pattern '*/test_rel//junit_report.xml' relative to '/var/lib/jenkins/workspace/test' for the testing framework 'JUnit'. Did you enter a pattern relative to the correct directory? Did you generate the result report(s) for 'JUnit'?xUnit WARNING - No test reports found for the metric 'JUnit' with the resolved pattern '/test_rel/*/junit_report.xml'.
        ERROR: Publisher org.jenkinsci.plugins.xunit.XUnitPublisher aborted due to exception
        java.lang.InterruptedException: org.jenkinsci.plugins.xunit.SkipTestException
        at hudson.FilePath.act(FilePath.java:905)
        at hudson.FilePath.act(FilePath.java:887)
        at org.jenkinsci.plugins.xunit.XUnitProcessor.performTests(XUnitProcessor.java:112)
        at org.jenkinsci.plugins.xunit.XUnitProcessor.performXUnit(XUnitProcessor.java:55)
        at org.jenkinsci.plugins.xunit.XUnitPublisher.perform(XUnitPublisher.java:80)
        at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:785)
        at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:757)
        at hudson.model.Build$BuildExecution.post2(Build.java:183)
        at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:706)
        at hudson.model.Run.execute(Run.java:1702)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
        at hudson.model.ResourceController.execute(ResourceController.java:88)
        at hudson.model.Executor.run(Executor.java:230)
        Caused by: hudson.FilePath$TunneledInterruptedException: org.jenkinsci.plugins.xunit.SkipTestException
        at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2424)
        at hudson.remoting.UserRequest.perform(UserRequest.java:118)
        at hudson.remoting.UserRequest.perform(UserRequest.java:48)
        at hudson.remoting.Request$2.run(Request.java:328)
        at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:679)
        Caused by: org.jenkinsci.plugins.xunit.SkipTestException
        at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:144)
        at org.jenkinsci.plugins.xunit.service.XUnitTransformer.invoke(XUnitTransformer.java:15)
        at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2422)
        ... 9 more
        Finished: FAILURE

        I don't have any files with report in this build and want the build not to fail because of this.

        1. I think your plugin is not updated correctly.
          Please report an issue. Wiki is not the right place for managing issues.
          Thanks

  17. I'm unable to convert cpp unit test xml's that have failures in them:

    xUnit ERROR - The result file 'D:\Jenkins\workspace\zTestCalls\result.xml' for the metric 'CppUnit' is not valid. The result file has been skipped.

    Structure of failures:<?xml version="1.0" encoding='ISO-8859-1' standalone='yes' ?>
    <TestRun>
    <FailedTests>
    <FailedTest id="8">
    <Name>PatientSerializeTest::testUpdateAKA</Name>
    <FailureType>Assertion</FailureType>
    <Location>
    <File>D:\DllUnitTester\Test.cpp</File>
    <Line>332</Line>
    </Location>
    <Message>forced failure

    • Unexpected Patient ID:
      </Message>
      <TestPath>/All Tests/SerializeTest/SerializeTest::testUpdateAKA</TestPath>
      <Time>0.000</Time>
      </FailedTest>
      ...
  18. I run the Ceedling framework using ryby for unit tests and Jenkins of course. I found a plugin that outputs cppUnit xml formatted results and it works great as long as no tests fail. My very simple results file is pasted below. The build fails with the following message:xUnit ERROR - The result file 'C:\Jenkins\jobs\Test\workspace\Ceedling\build\artifacts\test\report.xml' for the metric 'CppUnit' is not valid. The result file has been skipped.

    Could someone please help me pinpoint the problem so I can update the ruby script that generates the xml file.

    <?xml version='1.0' encoding='utf-8' ?>
    <TestRun>
    	<FailedTests>
    		<FailedTest id="1"/>
    			<Name>../tests/test_nothing.c::test_nothing</Name>
    			<FailureType>Assertion</FailureType>
    			<Location>
    				<File>../tests/test_nothing.c</File>
    				<Line>15</Line>
    			</Location>
    			<Message>Expression Evaluated To FALSE</Message>
    		</Test>
    	</FailedTests>
    	<SuccessfulTests/>
    	<Statistics>
    		<Tests>1</Tests>
    		<FailuresTotal>1</FailuresTotal>
    		<Errors>0</Errors>
    		<Failures>1</Failures>
    	</Statistics>
    </TestRun>
    
    1. Found the error, it is the a stray '/' after 'id="1" and </Test>  should be </FailedTest>.

  19. I am trying to xUnit to work with a an jUnit xml report but it always throw "... for the metric 'JUnit' is not valid. The result file has been skipped."

    The xml file is working perfectly with standard "Publish jUnit report" build in plug in so I assume it is valid junit xml file. Xml file is generated by nosexunit for python

    The jenkins log doesn't show more info that above one.

    Below are the first few lines of the xml.

    <?xml version="1.0" encoding="UTF-8"?><testsuite name="Smoke Tests" tests="24" errors="0" failures="0" time="0.000">
        <testcase classname="SmokeTests" name="test_0012_GetUser" time="0.505">
            <success type="test_0012_GetUser">
                <![CDATA[test_0012_GetUser (__main__.SmokeTests)]]>
            </success>
        </testcase>
    ....
    

    I did find many mentioning of this problem in the internet but no solution was provided

    Any help is appreciated

  20. Hi,

    I am not able to understand whether this plugin takes a CSV file as an input.

    can you please comment on this?

    if the answer is yes, can you provide an example of the expected CSV?

    thank you

    Gustavo.

    1. Hi there,

      actually I still don't get it working for me. Currently I am figuring out how to integrate boost test results into xUnit-Plugin, but console log keeps complaining:

      [xUnit] [INFO] - Processing BoostTest-1.x (default)
      [xUnit] [INFO] - [BoostTest-1.x (default)] - 1 test report file(s) were found with the pattern 'DynoDesk/bin/testResults/*.xml' relative to '/var/lib/jenkins/jobs/DynoDesk/workspace' for the testing framework 'BoostTest-1.x (default)'.
      [xUnit] [ERROR] - There is at least one problem. Check the Jenkins system log for more information. (if you don't have configured yet the system log before, you have to rebuild).
      [xUnit] [INFO] - Setting the build status to FAILURE
      [xUnit] [INFO] - Stopping recording.
      

      with system log output:

      [xUnit] - [BoostTest-1.x (default)] - 1 test report file(s) were found with the pattern 'DynoDesk/bin/testResults/*.xml' relative to '/var/lib/jenkins/jobs/DynoDesk/workspace' for the testing framework 'BoostTest-1.x (default)'.Mrz 05, 2015 12:15:50 PM WARNUNG org.jenkinsci.plugins.xunit.service.XUnitService warningSystemLogger[xUnit] - The file '/var/lib/jenkins/jobs/DynoDesk/workspace/DynoDesk/bin/testResults/SchedulerExampleAuto_Test.xml' is an invalid file.Mrz 05, 2015 12:15:50 PM WARNUNG org.jenkinsci.plugins.xunit.service.XUnitService warningSystemLogger[xUnit] - At line 1 of file:/var/lib/jenkins/jobs/DynoDesk/workspace/DynoDesk/bin/testResults/SchedulerExampleAuto_Test.xml:cvc-elt.1: Deklaration des Elements "TestResult" kann nicht gefunden werden.Mrz 05, 2015 12:15:50 PM SCHWERWIEGEND org.jenkinsci.plugins.xunit.service.XUnitService errorSystemLogger[xUnit] - The result file '/var/lib/jenkins/jobs/DynoDesk/workspace/DynoDesk/bin/testResults/SchedulerExampleAuto_Test.xml' for the metric 'BoostTest' is not valid. The result file has been skipped.
      

      and result file:

      <TestResult><TestSuite name="Example" result="passed" assertions_passed="1" assertions_failed="0" expected_failures="0" test_cases_passed="1" test_cases_failed="0" test_cases_skipped="0" test_cases_aborted="0"></TestSuite></TestResult>
      
      
      

      Using plugin version 1.94 and boost version 1.54 on jenkins 1.601.

      Any help would be greatly appreciated.

      **EDIT

      Ok, already got it. Finally It came down to reading some comments, which was - usually thinking of this as the first thing to do - exactly what helped me. Just used -report-format instead of --output-format. Thanks anyway! ;)

  21. Hi there,

    We have multiple XML files and we would like it NOT to aggregate the results and display them in separate graphs, is this possible already and am I missing some knowledge somewhere, if not - would you be willing to support this feature? Currently if you manually specify two JUnit XML results files it aggregates the results together into one graph.

  22. I am using the SkippableFact Function from XUnit and the Tests i run in Jenkins with this Function doesn't show Test names in the Result Section.

    http://stackoverflow.com/questions/35696081/xunit-testresult-in-jenkins-doesnt-show-testnames

    Here i have made an overview, with screenshots of the problem

  23. Hi, 
    Thanks for this great plugin!!

    I am using xUnit plugin and JUnit component.
    I can see multiple "Latest Test Result" links,along with Multiple "Test Result Trendgraphs.
    Also,the graphs have no data,where as the test cases data can be seen by clicking on the "Latest Test Result" link.
    Also,the "Test Result Trend" has always the latest build number only and is always empty.

    I am assigning build number to my jobs via a groovy script(so that all my jobs can share unique build numbers across jenkins),and I feel the same causes the graphs to have the only the latest build number,and thus the blank "Test Result Trend" graph.
    The Test results however can be easily used/consumed by other plugins like "tests results analyser"

  24. Hi,

    I've recently updated Jenkins to 2.9 (from 2.6), including all slave.jars and all plugins with their most recent versions. All of suddenly, job started at one particular slave hangs at xunit processing, which worked OK so far.

    This is what I see in job console:

    ...
    Build step 'Conditional steps (multiple)' marked build as failure
    Archiving artifacts
    [xUnit] [INFO] - Starting to record.
    [xUnit] [INFO] - Processing Custom Tool
    [xUnit] [INFO] - [Custom Tool] - 1 test report file(s) were found with the pattern 'Reports\unpacked*_build-5481.rxlog.data' relative to 'c:\Jenkins\workspace\SecurexMonitoring' for the testing framework 'Custom Tool'.

    From time to time, the xunit processing finishes after unusually long period of time. But in most cases, I need to kill the job manually, because it blocks other jobs.

    Virtually the same works fine on two other slave machines. The only difference between the slaves is that the not-working one is located in different data center. But it was there also before. The response time of the problematic slave is around 150ms, so it should not be an issue either? Jenkins configuration should be the same on all three slaves.

    Once I kill the 'hanged' job, it throws this exception to master console:

    Jun 14, 2016 12:45:27 PM WARNING hudson.model.AbstractBuild$AbstractBuildExecution reportError
    Step ‘Publish xUnit test result report’ aborted due to exception:
    java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at hudson.remoting.Request.call(Request.java:147)
    at hudson.remoting.Channel.call(Channel.java:780)
    at hudson.FilePath.act(FilePath.java:1007)
    at hudson.FilePath.act(FilePath.java:996)
    at org.jenkinsci.plugins.xunit.XUnitProcessor.performTests(XUnitProcessor.java:145)
    at org.jenkinsci.plugins.xunit.XUnitProcessor.performXUnit(XUnitProcessor.java:88)
    at org.jenkinsci.plugins.xunit.XUnitPublisher.perform(XUnitPublisher.java:142)
    at org.jenkinsci.plugins.xunit.XUnitPublisher.perform(XUnitPublisher.java:134)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:720)
    at hudson.model.Build$BuildExecution.post2(Build.java:185)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:665)
    at hudson.model.Run.execute(Run.java:1745)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)

    Any idea what could be the cause of this problem or what to try to fix it? Feel free to let me know if you need more details.

  25. In the scenario where the unit tests are being run inside Docker containers, what is the recommended method for collecting the results from the Jenkins worker so that this plugin can process them on, e.g., Jenkins master?  Is anyone doing this?

    1. Just came here with the exact same question. Figuring out how to make this work now.

  26. Hello! I have an issue regarding to the "error result display panel" (the table that shows what test has failed).

    The display is showing the wrong test name, it's mixing the method name itself with the test alias, somenthing like:

    "MyClass.CheckApplicationWindand after check the result"

    Basically this table result shows the test name, although I've set up the XUnit to display a personalized name for each test and than i get this error.

    The method has this attribute

    [Fact(DisplayName = "Check application entries on Windows.")]
    public void CheckApplicationWindowsEntries()

     

    This is a brief example of result xml

    <test name="Check application entries on Windows." type="UITest.UITest" method="CheckApplicationWindowsEntries" time="5.1170766" result="Fail">
    <output><![CDATA[Starting test: CheckApplicationWindowsEntries Sleeping 5 second(s)]]>
    </output>
    </test>

    1. Tiago Barroso this is not the right place to post issues. Please fill a detailed bug on the Jenkins issue tracker (remember to also the generated report)

Write a comment…