Generating display names for @ParameterizedTest in JUnit 5(在JUnit5中为@参数化为测试生成显示名称)
本文介绍了在JUnit5中为@参数化为测试生成显示名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一堆从@MethodSource
接收参数的@ParameterizedTest
,toString()
结果非常详细(例如Selify的WebDriver
)。默认情况下,这些名称用于组成相应的显示名称。来自JUnit 5 user guide:
默认情况下,参数化测试调用的显示名称包含调用索引和该特定调用的所有参数的字符串表示形式。但是,您可以通过虽然这允许在一定程度上自定义显示名称,但我似乎无法调整各个参数的字符串表示形式。遗憾的是,通过@ParameterizedTest
注释[…]的name
属性来自定义调用显示名称
@DisplayNameGeneration
指定生成器只能应用于类级别,并且不会影响参数化测试调用的显示名称。
有没有办法对@ParameterizedTest
使用DisplayNameGenerator
或自定义给定参数的字符串表示形式?
推荐答案
从JUnit5.8.0开始,有一个Named<T>
接口作为JUnitJupiter API的一部分,它自动支持将包含的有效负载[参数]直接注入到参数化方法中(请参阅issue #2301)。示例:
@DisplayName("A parameterized test with named arguments")
@ParameterizedTest(name = "{index}: {0}")
@MethodSource("namedArguments")
void testWithNamedArguments(File file) {}
static Stream<Arguments> namedArguments() {
return Stream.of(
Arguments.of(Named.of("An important file", new File("path1"))),
Arguments.of(Named.of("Another file", new File("path2")))
);
}
如果您更喜欢静态导入,也可以从Arguments
和Named
中获取相应的别名:
arguments(named("An important file", new File("path1")))
有关详细信息,请参阅corresponding docs。
这篇关于在JUnit5中为@参数化为测试生成显示名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在JUnit5中为@参数化为测试生成显示名称
基础教程推荐
猜你喜欢
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01