Skip to content

Commit

Permalink
Clean up test code in junit-jupiter-params
Browse files Browse the repository at this point in the history
  • Loading branch information
marcphilipp committed Oct 14, 2020
1 parent 76e7f01 commit a37f726
Show file tree
Hide file tree
Showing 18 changed files with 262 additions and 272 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import org.junit.jupiter.api.TestInstance.Lifecycle;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.TestInstances;
import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
import org.junit.jupiter.engine.execution.ExtensionValuesStore;
import org.junit.jupiter.engine.execution.NamespaceAwareStore;
import org.junit.jupiter.params.provider.Arguments;
Expand All @@ -52,35 +51,33 @@ class ParameterizedTestExtensionTests {

@Test
void supportsReturnsFalseForMissingTestMethod() {
ExtensionContext extensionContextWithoutTestMethod = getExtensionContextReturningSingleMethod(
new TestCaseWithoutMethod());
var extensionContextWithoutTestMethod = getExtensionContextReturningSingleMethod(new TestCaseWithoutMethod());
assertFalse(this.parameterizedTestExtension.supportsTestTemplate(extensionContextWithoutTestMethod));
}

@Test
void supportsReturnsFalseForTestMethodWithoutParameterizedTestAnnotation() {
ExtensionContext extensionContextWithUnAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
var extensionContextWithUnAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
new TestCaseWithMethod());
assertFalse(this.parameterizedTestExtension.supportsTestTemplate(extensionContextWithUnAnnotatedTestMethod));
}

@Test
void supportsReturnsTrueForTestMethodWithParameterizedTestAnnotation() {
ExtensionContext extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
var extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
new TestCaseWithAnnotatedMethod());
assertTrue(this.parameterizedTestExtension.supportsTestTemplate(extensionContextWithAnnotatedTestMethod));
}

@Test
void streamsReturnedByProvidersAreClosedWhenCallingProvide() {
ExtensionContext extensionContext = getExtensionContextReturningSingleMethod(
var extensionContext = getExtensionContextReturningSingleMethod(
new ArgumentsProviderWithCloseHandlerTestCase());
// we need to call supportsTestTemplate() first, because it creates and
// puts the ParameterizedTestMethodContext into the Store
this.parameterizedTestExtension.supportsTestTemplate(extensionContext);

Stream<TestTemplateInvocationContext> stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(
extensionContext);
var stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(extensionContext);

assertFalse(streamWasClosed);
// cause the stream to be evaluated
Expand All @@ -94,48 +91,47 @@ void argumentsRethrowsOriginalExceptionFromProviderAsUncheckedException() {
throw new FileNotFoundException("a message");
};

FileNotFoundException exception = assertThrows(FileNotFoundException.class,
() -> arguments(failingProvider, null));
var exception = assertThrows(FileNotFoundException.class, () -> arguments(failingProvider, null));
assertEquals("a message", exception.getMessage());
}

@Test
void throwsExceptionWhenParameterizedTestIsNotInvokedAtLeastOnce() {
ExtensionContext extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
var extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
new TestCaseWithAnnotatedMethod());

Stream<TestTemplateInvocationContext> stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(
var stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(
extensionContextWithAnnotatedTestMethod);
// cause the stream to be evaluated
stream.toArray();
JUnitException exception = assertThrows(JUnitException.class, stream::close);
var exception = assertThrows(JUnitException.class, stream::close);

assertThat(exception).hasMessage(
"Configuration error: You must configure at least one set of arguments for this @ParameterizedTest");
}

@Test
void throwsExceptionWhenArgumentsProviderIsNotStatic() {
ExtensionContext extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
var extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
new NonStaticArgumentsProviderTestCase());

Stream<TestTemplateInvocationContext> stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(
var stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(
extensionContextWithAnnotatedTestMethod);

JUnitException exception = assertThrows(JUnitException.class, stream::toArray);
var exception = assertThrows(JUnitException.class, stream::toArray);

assertArgumentsProviderInstantiationException(exception, NonStaticArgumentsProvider.class);
}

@Test
void throwsExceptionWhenArgumentsProviderDoesNotContainNoArgumentConstructor() {
ExtensionContext extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
var extensionContextWithAnnotatedTestMethod = getExtensionContextReturningSingleMethod(
new MissingNoArgumentsConstructorArgumentsProviderTestCase());

Stream<TestTemplateInvocationContext> stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(
var stream = this.parameterizedTestExtension.provideTestTemplateInvocationContexts(
extensionContextWithAnnotatedTestMethod);

JUnitException exception = assertThrows(JUnitException.class, stream::toArray);
var exception = assertThrows(JUnitException.class, stream::toArray);

assertArgumentsProviderInstantiationException(exception, MissingNoArgumentsConstructorArgumentsProvider.class);
}
Expand All @@ -151,7 +147,7 @@ private <T> void assertArgumentsProviderInstantiationException(JUnitException ex
private ExtensionContext getExtensionContextReturningSingleMethod(Object testCase) {

// @formatter:off
Optional<Method> optional = Arrays.stream(testCase.getClass().getDeclaredMethods())
var optional = Arrays.stream(testCase.getClass().getDeclaredMethods())
.filter(method -> method.getName().equals("method"))
.findFirst();
// @formatter:on
Expand All @@ -167,7 +163,7 @@ public Optional<Method> getTestMethod() {

@Override
public Optional<ExtensionContext> getParent() {
return null;
return Optional.empty();
}

@Override
Expand All @@ -192,12 +188,12 @@ public Set<String> getTags() {

@Override
public Optional<AnnotatedElement> getElement() {
return null;
return Optional.empty();
}

@Override
public Optional<Class<?>> getTestClass() {
return null;
return Optional.empty();
}

@Override
Expand Down Expand Up @@ -269,7 +265,7 @@ static class ArgumentsProviderWithCloseHandler implements ArgumentsProvider {

@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
Stream<Arguments> argumentsStream = Stream.of("foo", "bar").map(Arguments::of);
var argumentsStream = Stream.of("foo", "bar").map(Arguments::of);
return argumentsStream.onClose(() -> streamWasClosed = true);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ void legacyReportingNames() {
var results = execute("testWithCustomName", String.class, int.class);

// @formatter:off
Stream<String> legacyReportingNames = results.testEvents().dynamicallyRegistered()
var legacyReportingNames = results.testEvents().dynamicallyRegistered()
.map(Event::getTestDescriptor)
.map(TestDescriptor::getLegacyReportingName);
// @formatter:on
Expand Down Expand Up @@ -272,7 +272,7 @@ void executesWithNullSourceForNumber() {

@Test
void failsWithNullSourceWithZeroFormalParameters() {
String methodName = "testWithNullSourceWithZeroFormalParameters";
var methodName = "testWithNullSourceWithZeroFormalParameters";
execute(methodName).containerEvents().failed().assertEventsMatchExactly(//
event(container(methodName), //
finishedWithFailure(//
Expand Down Expand Up @@ -358,7 +358,7 @@ void executesWithEmptySourceForTwoDimensionalStringArray() {

@Test
void failsWithEmptySourceWithZeroFormalParameters() {
String methodName = "testWithEmptySourceWithZeroFormalParameters";
var methodName = "testWithEmptySourceWithZeroFormalParameters";
execute(methodName).containerEvents().failed().assertEventsMatchExactly(//
event(container(methodName), //
finishedWithFailure(//
Expand All @@ -381,7 +381,7 @@ void failsWithEmptySourceForUnsupportedType(String methodName, Class<?> paramete
finishedWithFailure(//
instanceOf(PreconditionViolationException.class), //
message(msg -> msg.matches("@EmptySource cannot provide an empty argument to method .+: \\["
+ parameterType.getName() + "\\] is not a supported type."))//
+ parameterType.getName() + "] is not a supported type."))//
)));
}

Expand Down Expand Up @@ -1093,7 +1093,7 @@ void test2(String argument, TestInfo testInfo) {
}

private void performTest(String argument, TestInfo testInfo) {
String testMethod = testInfo.getTestMethod().get().getName();
var testMethod = testInfo.getTestMethod().orElseThrow().getName();
testMethods.add(testMethod);
lifecycleEvents.add(testMethod + ":" + testInfo.getDisplayName());
fail(argument);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,10 @@ void invalidSignatures(String name) {
}

private Method method(String name) {
return Arrays.stream(getClass().getDeclaredMethods()).filter(m -> m.getName().equals(name)).findFirst().get();
return Arrays.stream(getClass().getDeclaredMethods()) //
.filter(m -> m.getName().equals(name)) //
.findFirst() //
.orElseThrow();
}

// --- VALID ---------------------------------------------------------------
Expand Down
Loading

0 comments on commit a37f726

Please sign in to comment.