= JUnit Platform + JUnit Jupiter + JUnit Vintage Junit Platform: Defines TestEngine API for developing a testing framework that runs on the platform. Junit Jupiter: provides TestEngine for running Junit 5 based tests on the platform. Junit Vintage: provides TestEngine for running Junit 3 and Junit 4 based tests on the platform. Test code depends only on the JUnit 5 API. IDE support: As of August 2016, supported by IntelliJ IDEA 2016.2 Milestone 2 released on July 23, 2016 GA release (due late 2016). Code samples available on GitHub (https://github.com/junit-team/junit5-samples) 10 août 2016 What is Junit 5
only on the JUnit 5 API. • IDEs and build tools depend on the Launcher and Engine APIs and can execute tests independent of the testing framework in use. 10 août 2016
package (org.junit.jupiter.api) than their JUnit 4 counterparts: @Test: the method is a test @TestFactory: the method is a test factory for dynamic tests @DisplayName: declares a custom display name (class or method) @BeforeEach: method executed before each test method @AfterEach: method executed after each test method @BeforeAll: method executed before all test methods @AfterAll: method executed after all test methods @Nested: denotes that the class is a nested, non-static test class @Tag: declare a tag for filtering tests (class or method) @Disabled: disable a test class or test method @ExtendWith: register custom extensions 10 août 2016 What is New
be public Meta-Annotation: Allows to define our own composed annotation Display Names with @DisplayName(“…”) Can contain spaces, special chars, and emoji Assertions Optional message is now the last parameter Grouped assertions using assertAll() expectThrows: check that method throws an exception, and returns the exception object to allow further testing. 10 août 2016 What is New (continued)
is not met. E.g. assumeTrue, assumingThat Disabling test with @Disabled Tagging: used to enable/disable tests with specific tags in a build and execution Equivalent of the Categories in JUnit 4 e.g. @Tag(“fast”). Nested Tests: Allow expressing relationship among several group of tests. 10 août 2016 What is New (continued)
previous @RunWith and @Rule extension mechanism Test constructors and methods are now permitted to have parameters enabling dependency injection. 2 built-in resolvers: TestInfo: information about the current test (e.g. display name) TestReporter: to publish additional data about the current test run Custom ParameterResolver: Specified with @ExtendWith 10 août 2016 What is New (continued)
generated at runtime. Generated at runtime by a factory method (annotated with @TestFactory). @TestFactory method returns a Stream, Collection, Iterable or Iterator of DynamicTest instances. 10 août 2016 What is New (continued)
in org.junit.jupiter.api.Assertions. Assumptions reside in org.junit.jupiter.api.Assumptions. @Before and @After no longer exist; use @BeforeEach and @AfterEach instead. @BeforeClass and @AfterClass no longer exist; use @BeforeAll and @AfterAll instead. @Ignore no longer exists: use @Disabled instead. @Category no longer exists; use @Tag instead. @RunWith no longer exists; superseded by @ExtendWith. @Rule and @ClassRule no longer exist; superseded by @ExtendWith. 10 août 2016 JUnit 4 to JUnit 5 Migration Tips