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


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

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


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

For example:

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:

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


Version 2.2.0



Version 2.1.0



Version 2.0.4


Version 2.0.3


Version 2.0.2


Version 2.0.1



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.

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.



Version 1.104



Version 1.103



Version 1.102

Version 1.101

Version 1.100

Version 1.99

Version 1.98

Version 1.97

Version 1.96

Version 1.95

Version 1.94

Version 1.93

Version 1.92

Version 1.91

Version 1.90

Version 1.89

Version 1.88

Version 1.87

Version 1.86

Version 1.85

Version 1.84

Version 1.83

Version 1.82

Version 1.81

Version 1.80

Version 1.79

Version 1.78

Version 1.77

Version 1.76

Version 1.75

Version 1.74

Version 1.73

Version 1.72

Version 1.71

Version 1.70

Version 1.69

Version 1.68

Version 1.67

Version 1.66

Version 1.65

Version 1.64

Version 1.63

Version 1.62

Version 1.61

Version 1.60

Version 1.59

Version 1.58

Version 1.57

Version 1.56

Version 1.55

Version 1.54

Version 1.53

Version 1.52

Version 1.51

Version 1.50

Version 1.49

Version 1.48

Version 1.47

Version 1.46

Version 1.45

Version 1.44

Version 1.43

Version 1.42

Version 1.41

Version 1.40

Version 1.39

Version 1.38

Version 1.37

* Fix execution with the DryRun Plugin

Version 1.36

* Fix JENKINS-12026 - xunit fails to parse boost test XML log

Version 1.35

* Fix JENKINS-12336 - Fail the build if test results were not updated this run" has no effect for JUnit

Version 1.34

* Accept test results when the number of tests is 0
* Add a JUnit type (therefore, xUnit plugin is an alternative to the JUnit archiver option)

Version 1.33

* Update to DTKit 0.24 /- fix CppUnit format check

Version 1.32

* Fix JENKINS-11908 - PHPUnit results xml fails to parse

Version 1.31

* Fix JENKINS-11858 - xUnit v1.30 fails with NullPointerException when parsing cppnit results

Version 1.30

* Add a threshold for skipped tests and failed tests

Version 1.29

* Make it compatible to the DryRun Plugin
Note: Built against Jenkins 1.410 required by the dry-run plugin.
Without the dry-run feature, the plugin is compatible to 1.409 series (LTS)

Version 1.28

* Add the ability to override embedded XSLs at Jenkins level (look above for documentation)

Version 1.27

* Fix reponed JENKINS-11552 - xUnit don't work with NUnit test since 1.25

Version 1.26.1

* Add error messages when an issue occurs

Version 1.26

* Fix reponed JENKINS-9286 - xUnit plugin cannot parse XML output with exception from boost test 1.42

Version 1.25

* Introduce Alias for the job configuration file
* Update to dtkit-default-junit 0.22 (Removed unused descriptor method)

Version 1.24

* Fix JENKINS-11344 - xUnit fails to parse boost test log

Version 1.23

* Fix JENKINS-10909 - Added support of Check tool

Version 1.22

* Fix JENKINS-10717 - xUnit boost test log processing fails on nested test suites (BOOST_AUTO_TEST_SUITE)

Version 1.20

* Fix JENKINS-10404 - UnitTest++ "time" element is ignored in results page, Duration field reported as 0ms

Version 1.19

* Fix JENKINS-9286 - xUnit plugin cannot parse XML output with exception from boost test 1.42

Version 1.18

* Update to DTKIT JUnit Format 0.16 - Added the support of skipped element

Version 1.17

* Update to DTKIT Default Junit 0.17
* Update to Jenkins 1.411 metadata

Version 1.16.2

* Fix JENKINS-9106 Custom type configuration does not pick up "Stop Processing If Error" flag

Version 1.16.1

* Fix reopen JENKINS-8843 The plugin hasn't been performed correctly: null
* Fix JENKINS-8901 The plugin hasn't been performed correctly: Unable to serialize hudson.FilePath$FileCallableWrapper@b749a3

Version 1.16

* Fix JENKINS-8843 The plugin hasn't been performed correctly: null

Version 1.15

* Fix JENKINS-6344 - fail build if any empty files exist, or provide option to do it
* Fix JENKINS-7612 - Superfluous INFO messages in console output
* Update to Jenkins 1.397 API and metadata

Version 1.14

* Fix JENKINS-8492 - NUnit test suites is not parsed correctly
* Fix JENKINS-8553 - BoostTest output coverting to JUnit format can't be recognized if contains Exceptions in boostTest result
* Fix JENKINS-8485 and JENKINS-8516
* Fix JENKINS-8787 CustomTypeDescriptor throws a RuntimeExcetion at startup
* Update to DTKIT Default Junit 0.15
* Update to DTKIT DEFAULT FRMK 0.12
* Update to DTKIT FORMAT 0.13
* Update to Jenkins 1.396 API and metadata

Version 1.13

* Update to DTKIT Default Junit 0.13
* Update to DTKIT DEFAULT FRMK 0.11

Version 1.12

* Update to DTKIT Default Junit 0.12

Version 1.11

* Update to DTKIT FRMK 0.10
* Update to DTKIT FORMAT 0.10
* Fix JENKINS-7943 - BOOST TestType hides master suites in the hierachy
* Fix JENKINS-7925 - BOOST TestType fail during validation

Version 1.10

* Update to DTKIT FRMK 0.9
* Update to DTKIT FORMAT 0.9
* Remove Guice injection on slave mode due to classloading issues.

Version 1.9

* Update to DTKIT Default Junit 0.9
* Update to DTKIT FRMK 0.8
* Fix JENKINS-7463 - BoosTest XSD enhanced
* Fix JENKINS-7323 - Can't create the report path

Version 1.8

* Update to DTKIT Default Junit 0.7
* Update to DTKIT FRMK 0.6
* Fix JENKINS-7336

Version 1.7

* Update to DTKIT Default Junit 0.6
* Update to DTKIT FRMK 0.5
* Restore the CustomType (enables users to provide a custom XSL) removed from 1.0

Version 1.6

* Update to DTKIT Default Junit 0.4 (Fixed reopened JENKINS-6951)
* Update to DTKIT FRMK 0.2

Verision 1.5

* Updated to DTKIT Default Junit 0.3 (Fixed JENKINS-6951)

Verision 1.4

* Fix the help file

Verision 1.3

* Update to DTKit 0.2 (Fixed PHPUnit xsd and xsl)
* Add the display of validation errors in the console for input and output files.

Version 1.2

Version 1.1

Version 1.0

Note: Gnat plugin extends the xUnit plugin