|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package example; |
|
|
|
import static org.junit.jupiter.api.Assertions.assertTrue; |
|
|
|
import java.util.Arrays; |
|
import java.util.Collections; |
|
import java.util.List; |
|
import java.util.stream.Stream; |
|
|
|
import org.junit.jupiter.api.TestTemplate; |
|
import org.junit.jupiter.api.extension.ExtendWith; |
|
import org.junit.jupiter.api.extension.Extension; |
|
import org.junit.jupiter.api.extension.ExtensionContext; |
|
import org.junit.jupiter.api.extension.ParameterContext; |
|
import org.junit.jupiter.api.extension.ParameterResolver; |
|
import org.junit.jupiter.api.extension.TestTemplateInvocationContext; |
|
import org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider; |
|
|
|
class TestTemplateDemo { |
|
|
|
|
|
final List<String> fruits = Arrays.asList("apple", "banana", "lemon"); |
|
|
|
@TestTemplate |
|
@ExtendWith(MyTestTemplateInvocationContextProvider.class) |
|
void testTemplate(String fruit) { |
|
assertTrue(fruits.contains(fruit)); |
|
} |
|
|
|
|
|
static |
|
|
|
|
|
public class MyTestTemplateInvocationContextProvider |
|
implements TestTemplateInvocationContextProvider { |
|
|
|
@Override |
|
public boolean supportsTestTemplate(ExtensionContext context) { |
|
return true; |
|
} |
|
|
|
@Override |
|
public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts( |
|
ExtensionContext context) { |
|
|
|
return Stream.of(invocationContext("apple"), invocationContext("banana")); |
|
} |
|
|
|
private TestTemplateInvocationContext invocationContext(String parameter) { |
|
return new TestTemplateInvocationContext() { |
|
@Override |
|
public String getDisplayName(int invocationIndex) { |
|
return parameter; |
|
} |
|
|
|
@Override |
|
public List<Extension> getAdditionalExtensions() { |
|
return Collections.singletonList(new ParameterResolver() { |
|
@Override |
|
public boolean supportsParameter(ParameterContext parameterContext, |
|
ExtensionContext extensionContext) { |
|
return parameterContext.getParameter().getType().equals(String.class); |
|
} |
|
|
|
@Override |
|
public Object resolveParameter(ParameterContext parameterContext, |
|
ExtensionContext extensionContext) { |
|
return parameter; |
|
} |
|
}); |
|
} |
|
}; |
|
} |
|
} |
|
|
|
|
|
|
|
} |
|
|