原创 | TDD 工具集:JUnit、AssertJ 和 Mockito (二十一) 编写测试 - 测试模板

用户头像
编程道与术
关注
发布于: 2020 年 06 月 12 日
原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-测试模板







重要性:★☆☆☆☆

如果测试类中的一个方法被注解为@TestTemplate,那么这个方法就是个测试模板方法。

测试模板方法本身不是测试方法,而是测试方法的模板,用于生成测试方法。测试模板方法必须与一个注册了的TestTemplateInvocationContextProvider扩展共同使用。测试模板方法被设计为在测试期间可以多次调用,其次数由注册的TestTemplateInvocationContextProvider返回的调用上下文的数量决定。测试模板方法的每次调用被视同为执行了一个注解为@Test的普通测试方法,完全支持相同的生命周期回调和扩展。

TestTemplateInvocationContextProvider负责提供一个TestTemplateInvocationContext实例的流。每个TestTemplateInvocationContext实例生成一个测试,它可以指定一个显示名以及用于执行下一轮调用的一系列额外的扩展。

下面的代码创建一个TestTemplateInvocationContextProvider实现类:

package yang.yu.tdd.template;
import org.junit.jupiter.api.extension.*;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;
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;
}
});
}
};
}
}

下面的代码将这个TestTemplateInvocationContextProvider扩展注册到测试模板方法testTemplate()



… …



点击阅读本节完整内容↓↓↓

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-测试模板

发布于: 2020 年 06 月 12 日 阅读数: 46
用户头像

编程道与术

关注

高级架构师,技术顾问,交流公号:编程道与术 2020.04.28 加入

杨宇于2020年创立编程道与术,致力于研究领域分析与建模、测试驱动开发、架构设计、自动化构建和持续集成、敏捷开发方法论、微服务、云计算等顶尖技术领域。 了解更多公众号:编程道与术

评论

发布
暂无评论
原创 | TDD工具集:JUnit、AssertJ和Mockito (二十一)编写测试-测试模板