Skip to content

Latest commit

 

History

History
122 lines (90 loc) · 3.14 KB

roadmap.md

File metadata and controls

122 lines (90 loc) · 3.14 KB

slidenumbers: true

Roadmap


[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

right


Sneak Preview


@TestTemplate (slated for M4)

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
    }
}

[fit] Feedback wanted!

Website (User Guide & Javadoc): junit.org/junit5/

Code & Issues: github.com/junit-team/junit5/

Twitter: twitter.com/junitteam/

right 400%

Footnotes

  1. Subject to change 😉

  2. 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

  3. Syntax will probably change, see https://github.com/junit-team/junit5/issues/48 for details