slidenumbers: true
[fit] Roadmap to GA1
- 5.0.0-M4 (March 2017): Parameterized tests
- 5.0.0-M5 (June 2017): Java 9 Compatibility
- 5.0.0-RC1 (July 2017): Fixes before GA
- 5.0.0 (August 2017): GA
class MyTest {
@TestTemplate @ExtendWith(MyTestTemplateInvocationContextProvider.class)
void testTemplate() {
// test something
}
}
class MyTestTemplateInvocationContextProvider
implements TestTemplateInvocationContextProvider {
@Override public Iterator<TestTemplateInvocationContext> provide(
ContainerExtensionContext context) {
return singletonIterator(new MyTestTemplateInvocationContext());
}
}
class MyTestTemplateInvocationContext implements TestTemplateInvocationContext {
@Override public String getDisplayName(int invocationIndex) {
return "[" + invocationIndex + "]";
}
@Override public List<Extension> getAdditionalExtensions() {
return asList(new MyParameterResolver(), new MyTestInstancePostProcessor(), ...);
}
}
@ParameterizedTest
(slated for M4)2
class ParameterizedTests {
@ParameterizedTest @StringSource({ "foo, 1", "bar, 2" })
void testWithParametersFromAnnotation(String parameter, int i) {
// test something
}
@ParameterizedTest @MethodSource("providerMethod")
void testWithParametersFromMethods(String parameter) {
}
static Iterable<String> providerMethod() { return asList("foo", "bar"); }
@ParameterizedTest @FileSource("foo.csv") @FileSource("bar.csv")
void testWithParametersFromFile(String parameter) {
}
}
@ScenarioTest
(M5 or 5.1+)3
@ScenarioTest
class WebSecurityScenarioTest {
@Step(next = "login")
void visitPageRequiringAuthorizationWhileNotLoggedIn() {
// attempt to visit page which requires that a user is logged in
}
@Step(next = "visitSecondPageRequiringAuthorizationWhileLoggedIn")
void login() {
// submit login form with valid credentials
}
@Step(next = "logout")
void visitSecondPageRequiringAuthorizationWhileLoggedIn() {
// visit another page which requires that a user is logged in
}
@Step(next = END)
void logout() {
// visit logout URL
}
}
Website (User Guide & Javadoc): junit.org/junit5/
Code & Issues: github.com/junit-team/junit5/
Twitter: twitter.com/junitteam/
Footnotes
-
Subject to change 😉 ↩
-
More examples: https://github.com/junit-team/junit5/blob/issues/14-params-experiments/junit-jupiter-params/src/test/java/org/junit/jupiter/params/ParamsApiPlayground.java#L25 ↩
-
Syntax will probably change, see https://github.com/junit-team/junit5/issues/48 for details ↩