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中为@参数化为测试生成显示名称


猜你喜欢
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 获取数字的最后一位 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 转换 ldap 日期 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01