JUnit: Difference between revisions
Jump to navigation
Jump to search
Line 60: | Line 60: | ||
{{External|https://llg.cubic.org/docs/junit/}} | {{External|https://llg.cubic.org/docs/junit/}} | ||
This file format is understood by the Jenkins [[Jenkins_Pipeline_Syntax#junit|junit]] step, which generates Jenkins test reports from it. | This file format is understood by the Jenkins [[Jenkins_Pipeline_Syntax#junit|junit]] step, which generates Jenkins test reports from it. | ||
<syntaxhighlight lang='xml'> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!-- If only a single testsuite element is present, the testsuites element can be omitted. | |||
All attributes are optional. | |||
--> | |||
<testsuites disabled="" <!-- total number of disabled tests from all testsuites. --> | |||
errors="" <!-- total number of tests with error result from all testsuites. --> | |||
failures="" <!-- total number of failed tests from all testsuites. --> | |||
name="" | |||
tests="" <!-- total number of tests from all testsuites. Some software may expect to only see the number of successful tests from all testsuites though. --> | |||
time="" <!-- time in seconds to execute all test suites. --> | |||
> | |||
<!-- testsuite can appear multiple times, if contained in a testsuites element. | |||
It can also be the root element. --> | |||
<testsuite name="" <!-- Full (class) name of the test for non-aggregated testsuite documents. | |||
Class name without the package for aggregated testsuites documents. Required --> | |||
tests="" <!-- The total number of tests in the suite, required. --> | |||
disabled="" <!-- the total number of disabled tests in the suite. optional. not supported by maven surefire. --> | |||
errors="" <!-- The total number of tests in the suite that errored. An errored test is one that had an unanticipated problem, | |||
for example an unchecked throwable; or a problem with the implementation of the test. optional --> | |||
failures="" <!-- The total number of tests in the suite that failed. A failure is a test which the code has explicitly failed | |||
by using the mechanisms for that purpose. e.g., via an assertEquals. optional --> | |||
hostname="" <!-- Host on which the tests were executed. 'localhost' should be used if the hostname cannot be determined. optional. not supported by maven surefire. --> | |||
id="" <!-- Starts at 0 for the first testsuite and is incremented by 1 for each following testsuite. optional. not supported by maven surefire. --> | |||
package="" <!-- Derived from testsuite/@name in the non-aggregated documents. optional. not supported by maven surefire. --> | |||
skipped="" <!-- The total number of skipped tests. optional --> | |||
time="" <!-- Time taken (in seconds) to execute the tests in the suite. optional --> | |||
timestamp="" <!-- when the test was executed in ISO 8601 format (2014-01-21T16:17:18). Timezone may not be specified. optional. not supported by maven surefire. --> | |||
> | |||
<!-- Properties (e.g., environment settings) set during test execution. | |||
The properties element can appear 0 or once. --> | |||
<properties> | |||
<!-- property can appear multiple times. The name and value attributres are required. --> | |||
<property name="" value=""/> | |||
</properties> | |||
<!-- testcase can appear multiple times, see /testsuites/testsuite@tests --> | |||
<testcase name="" <!-- Name of the test method, required. --> | |||
assertions="" <!-- number of assertions in the test case. optional. not supported by maven surefire. --> | |||
classname="" <!-- Full class name for the class the test method is in. required --> | |||
status="" <!-- optional. not supported by maven surefire. --> | |||
time="" <!-- Time taken (in seconds) to execute the test. optional --> | |||
> | |||
<!-- If the test was not executed or failed, you can specify one of the skipped, error or failure elements. --> | |||
<!-- skipped can appear 0 or once. optional --> | |||
<skipped message="" <!-- message/description string why the test case was skipped. optional --> | |||
/> | |||
<!-- error indicates that the test errored. | |||
An errored test had an unanticipated problem. | |||
For example an unchecked throwable (exception), crash or a problem with the implementation of the test. | |||
Contains as a text node relevant data for the error, for example a stack trace. optional --> | |||
<error message="" <!-- The error message. e.g., if a java exception is thrown, the return value of getMessage() --> | |||
type="" <!-- The type of error that occured. e.g., if a java execption is thrown the full class name of the exception. --> | |||
>error description</error> | |||
<!-- failure indicates that the test failed. | |||
A failure is a condition which the code has explicitly failed by using the mechanisms for that purpose. | |||
For example via an assertEquals. | |||
Contains as a text node relevant data for the failure, e.g., a stack trace. optional --> | |||
<failure message="" <!-- The message specified in the assert. --> | |||
type="" <!-- The type of the assert. --> | |||
>failure description</failure> | |||
<!-- Data that was written to standard out while the test was executed. optional --> | |||
<system-out>STDOUT text</system-out> | |||
<!-- Data that was written to standard error while the test was executed. optional --> | |||
<system-err>STDERR text</system-err> | |||
</testcase> | |||
<!-- Data that was written to standard out while the test suite was executed. optional --> | |||
<system-out>STDOUT text</system-out> | |||
<!-- Data that was written to standard error while the test suite was executed. optional --> | |||
<system-err>STDERR text</system-err> | |||
</testsuite> | |||
</testsuites> | |||
</syntaxhighlight> | |||
More details: {{Internal|Jenkins_Pipeline_Syntax#junit|Jenkins junit step}} | More details: {{Internal|Jenkins_Pipeline_Syntax#junit|Jenkins junit step}} |
Revision as of 05:48, 8 May 2021
External
- https://www.infoq.com/presentations/junit-5-demo
- Latest JUnit 4 version: https://junit.org/junit4/
- https://junit.org/junit4/javadoc/latest/
Internal
Overview
Dependencies
dependencies {
testImplementation "junit:junit:4.12"
}
JUnit and Gradle
The only configuration required to enable unit testing in a Gradle project is to apply the Java plugin and declared JUnit as testImplementation:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
...
testImplementation "junit:junit:4.12"
}
This will allow to declare @Test methods and will enable result parsing to generate HTML reports.
Passing System Properties to Tests
See:
Concepts
Test Runner
A JUnit plugin that provides custom testing behavior. Specified with @RunWith.
Annotations
Patterns
JUnit XML Reporting File Format
This file format is understood by the Jenkins junit step, which generates Jenkins test reports from it.
<?xml version="1.0" encoding="UTF-8"?>
<!-- If only a single testsuite element is present, the testsuites element can be omitted.
All attributes are optional.
-->
<testsuites disabled="" <!-- total number of disabled tests from all testsuites. -->
errors="" <!-- total number of tests with error result from all testsuites. -->
failures="" <!-- total number of failed tests from all testsuites. -->
name=""
tests="" <!-- total number of tests from all testsuites. Some software may expect to only see the number of successful tests from all testsuites though. -->
time="" <!-- time in seconds to execute all test suites. -->
>
<!-- testsuite can appear multiple times, if contained in a testsuites element.
It can also be the root element. -->
<testsuite name="" <!-- Full (class) name of the test for non-aggregated testsuite documents.
Class name without the package for aggregated testsuites documents. Required -->
tests="" <!-- The total number of tests in the suite, required. -->
disabled="" <!-- the total number of disabled tests in the suite. optional. not supported by maven surefire. -->
errors="" <!-- The total number of tests in the suite that errored. An errored test is one that had an unanticipated problem,
for example an unchecked throwable; or a problem with the implementation of the test. optional -->
failures="" <!-- The total number of tests in the suite that failed. A failure is a test which the code has explicitly failed
by using the mechanisms for that purpose. e.g., via an assertEquals. optional -->
hostname="" <!-- Host on which the tests were executed. 'localhost' should be used if the hostname cannot be determined. optional. not supported by maven surefire. -->
id="" <!-- Starts at 0 for the first testsuite and is incremented by 1 for each following testsuite. optional. not supported by maven surefire. -->
package="" <!-- Derived from testsuite/@name in the non-aggregated documents. optional. not supported by maven surefire. -->
skipped="" <!-- The total number of skipped tests. optional -->
time="" <!-- Time taken (in seconds) to execute the tests in the suite. optional -->
timestamp="" <!-- when the test was executed in ISO 8601 format (2014-01-21T16:17:18). Timezone may not be specified. optional. not supported by maven surefire. -->
>
<!-- Properties (e.g., environment settings) set during test execution.
The properties element can appear 0 or once. -->
<properties>
<!-- property can appear multiple times. The name and value attributres are required. -->
<property name="" value=""/>
</properties>
<!-- testcase can appear multiple times, see /testsuites/testsuite@tests -->
<testcase name="" <!-- Name of the test method, required. -->
assertions="" <!-- number of assertions in the test case. optional. not supported by maven surefire. -->
classname="" <!-- Full class name for the class the test method is in. required -->
status="" <!-- optional. not supported by maven surefire. -->
time="" <!-- Time taken (in seconds) to execute the test. optional -->
>
<!-- If the test was not executed or failed, you can specify one of the skipped, error or failure elements. -->
<!-- skipped can appear 0 or once. optional -->
<skipped message="" <!-- message/description string why the test case was skipped. optional -->
/>
<!-- error indicates that the test errored.
An errored test had an unanticipated problem.
For example an unchecked throwable (exception), crash or a problem with the implementation of the test.
Contains as a text node relevant data for the error, for example a stack trace. optional -->
<error message="" <!-- The error message. e.g., if a java exception is thrown, the return value of getMessage() -->
type="" <!-- The type of error that occured. e.g., if a java execption is thrown the full class name of the exception. -->
>error description</error>
<!-- failure indicates that the test failed.
A failure is a condition which the code has explicitly failed by using the mechanisms for that purpose.
For example via an assertEquals.
Contains as a text node relevant data for the failure, e.g., a stack trace. optional -->
<failure message="" <!-- The message specified in the assert. -->
type="" <!-- The type of the assert. -->
>failure description</failure>
<!-- Data that was written to standard out while the test was executed. optional -->
<system-out>STDOUT text</system-out>
<!-- Data that was written to standard error while the test was executed. optional -->
<system-err>STDERR text</system-err>
</testcase>
<!-- Data that was written to standard out while the test suite was executed. optional -->
<system-out>STDOUT text</system-out>
<!-- Data that was written to standard error while the test suite was executed. optional -->
<system-err>STDERR text</system-err>
</testsuite>
</testsuites>
More details: