Running automated tests is a crucial component of any successful continuous
delivery process. As such, Jenkins has a number of test recording, reporting,
and visualization facilities provided by a
number of plugins.
At a fundamental level, when there are test failures, it is useful to have
Jenkins record the failures for reporting and visualization in the web UI. The
example below uses the junit
step, provided by the
JUnit plugin.
In the example below, if tests fail, the Pipeline is marked "unstable", as denoted by a yellow ball in the web UI. Based on the recorded test reports, Jenkins can also provide historical trend analysis and visualization.
Declarative syntax
Scripted syntax
pipeline { agent any stages { stage('Test') { steps { /* `make check` returns non-zero on test failures, * using `true` to allow the Pipeline to continue nonetheless */ sh 'make check || true' (1) junit '**/target/*.xml' (2) } } } }
1 | Using an inline shell conditional (sh 'make || true' ) ensures that the
sh step always sees a zero exit code, giving the junit step the opportunity
to capture and process the test reports. Alternative approaches to this are
covered in more detail in the Handling Failures section below. |
2 | junit captures and associates the JUnit XML files matching the inclusion
pattern (**/target/*.xml ). |
node { /* .. snip .. */ stage('Test') { /* `make check` returns non-zero on test failures, * using `true` to allow the Pipeline to continue nonetheless */ sh 'make check || true' (1) junit '**/target/*.xml' (2) } /* .. snip .. */ }
1 | Using an inline shell conditional (sh 'make || true' ) ensures that the
sh step always sees a zero exit code, giving the junit step the opportunity
to capture and process the test reports. Alternative approaches to this are
covered in more detail in the Handling Failures section below. |
2 | junit captures and associates the JUnit XML files matching the inclusion
pattern (**/target/*.xml ). |