Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jenkinsci/junit-plugin

Allows JUnit-format test results to be published
https://github.com/jenkinsci/junit-plugin

hacktoberfest jenkins jenkins-plugin junit

Last synced: 7 days ago
JSON representation

Allows JUnit-format test results to be published

Awesome Lists containing this project

README

        

# JUnit Plugin for Jenkins

[![Jenkins Plugin](https://img.shields.io/jenkins/plugin/v/junit.svg)](https://plugins.jenkins.io/junit)
[![GitHub release](https://img.shields.io/github/release/jenkinsci/junit-plugin.svg?label=release)](https://github.com/jenkinsci/junit-plugin/releases/latest)
[![Jenkins Plugin Installs](https://img.shields.io/jenkins/plugin/i/junit.svg?color=blue)](https://plugins.jenkins.io/junit)

The JUnit plugin provides a publisher that consumes XML test reports generated during the builds and provides some graphical visualization of the historical test results
(see [JUnit graph](https://wiki.jenkins.io/display/JENKINS/JUnit+graph) for a sample)
as well as a web UI for viewing test reports, tracking failures, and so on.
Jenkins understands the JUnit test report XML format (which is also used by TestNG).
When this option is configured, Jenkins can provide useful information about test results, such as trends.

The plugin also provides a generic API for other unit-test publisher plugins in Jenkins. This functionality was part of the Jenkins Core until it was split out to this plugin in version in 1.577.

## Configuration

The JUnit publisher is configured at the job level by adding a Publish JUnit test result report post build action. The configuration parameters include:

* **Test report XMLs:** Specify the path to JUnit XML files in the Ant glob syntax, such as `**/build/test-reports/*.xml`.
Be sure not to include any non-report files into this pattern.
You can specify multiple patterns of files separated by commas.
The base directory of the fileset is the workspace root.
* **Retain long standard output/error:** If checked, any standard output or error from a test suite will be retained in the test results after the build completes.
(This refers only to additional messages printed to console, not to a failure stack trace).
Such output is always kept if the test failed, but by default lengthy output from passing tests is truncated to save space.
Check this option if you need to see every log message from even passing tests, but beware that Jenkins's memory consumption can substantially increase as a result, even if you never look at the test results!
* **Health report amplification factor:** The amplification factor to apply to test failures when computing the test result contribution to the build health score.
The default factor is 1.0. A factor of 0.0 will disable the test result contribution to build health score, and, as an example, a factor of 0.5 means that 10% of tests failing will score 95% health.
The factor is persisted with the build results, so changes will only be reflected in new builds.
* **Allow empty results:** If checked, the default behavior of failing a build on missing test result files or empty test results is changed to not affect the status of the build.
Please note that this setting make it harder to spot misconfigured jobs or build failures where the test tool does not exit with an error code when not producing test report files.
* **Skip publishing checks:** If this option is unchecked, then the plugin automatically publishes the test results to corresponding SCM hosting platforms.
For example, if you are using this feature for a GitHub organization project, the warnings will be published to
GitHub through the Checks API. If this operation slows down your build, or you don't want to publish the warnings to
SCM platforms, you can use this option to deactivate this feature.
* **Checks name:** If provided, and publishing checks enabled, the plugin will use this name when publishing
results to corresponding SCM hosting platforms. If not, a default of "Test" will be used.
* **Skip marking build unstable:** If this option is unchecked, then the plugin will mark the build as unstable when it finds at least 1 test failure.
If this option is checked, then the build will still be successful even if there are test failures reported.
In any case, the corresponding pipeline node (and stage) will be marked as unstable in case of test failure.
In order to enable this, set the property:
`skipMarkingBuildUnstable` to `true`:

junit skipMarkingBuildUnstable: true, testResults: 'test-results.xml'

### Test result checks (for GitHub projects)

:warning: This feature requires:
* the installation of an additional plugin: [GitHub Checks Plugin](https://github.com/jenkinsci/github-checks-plugin)
* the configuration of GitHub App credentails, see [this guide](https://docs.cloudbees.com/docs/cloudbees-ci/latest/cloud-admin-guide/github-app-auth) for more details.

If not disabled in the job configuration, this plugin will publish test results to GitHub through [GitHub checks API](https://docs.github.com/en/rest/reference/checks).

In the *Details* view of each check ([example](https://github.com/timja-org/junit-attachments-test/pull/4/checks?check_run_id=1237630805)), test results will be displayed.

![checks](images/checks.png)

In order to disable the checks feature, set the property `skipPublishingChecks` to `true`:
```groovy
junit skipPublishingChecks: true, testResults: 'test-results.xml'
```

The plugin will default to using the stage name or branch of a parallel step prepended by `Tests` for the checks name.
If there are no enclosing stages or branches, `Tests` will be used. The name can also be overridden by a `withChecks` step.

The following snippet would publish three checks with the names `Tests / Integration`, `Tests` and `Integration Tests`, respectively.

```groovy
stage('Integration') {
junit 'test-results.xml'
}

junit 'more-test-results.xml'

stage('Ignored') {
withChecks('Integration Tests') {
junit 'yet-more-test-results.xml'
}
}
```

## Contributing

Refer to our [contribution guidelines](https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md)