本文介紹了在JUnit5中為@參數(shù)化為測試生成顯示名稱的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我有一堆從@MethodSource
接收參數(shù)的@ParameterizedTest
,toString()
結(jié)果非常詳細(xì)(例如Selify的WebDriver
)。默認(rèn)情況下,這些名稱用于組成相應(yīng)的顯示名稱。來自JUnit 5 user guide:
默認(rèn)情況下,參數(shù)化測試調(diào)用的顯示名稱包含調(diào)用索引和該特定調(diào)用的所有參數(shù)的字符串表示形式。但是,您可以通過
@ParameterizedTest
注釋[…]的name
屬性來自定義調(diào)用顯示名稱
雖然這允許在一定程度上自定義顯示名稱,但我似乎無法調(diào)整各個參數(shù)的字符串表示形式。遺憾的是,通過@DisplayNameGeneration
指定生成器只能應(yīng)用于類級別,并且不會影響參數(shù)化測試調(diào)用的顯示名稱。
有沒有辦法對@ParameterizedTest
使用DisplayNameGenerator
或自定義給定參數(shù)的字符串表示形式?
推薦答案
從JUnit5.8.0開始,有一個Named<T>
接口作為JUnitJupiter API的一部分,它自動支持將包含的有效負(fù)載[參數(shù)]直接注入到參數(shù)化方法中(請參閱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")))
);
}
如果您更喜歡靜態(tài)導(dǎo)入,也可以從Arguments
和Named
中獲取相應(yīng)的別名:
arguments(named("An important file", new File("path1")))
有關(guān)詳細(xì)信息,請參閱corresponding docs。
這篇關(guān)于在JUnit5中為@參數(shù)化為測試生成顯示名稱的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,