[英]Parameterised Test Execution in JUnit Jupiter(JUnit5)
有沒有辦法在JUnit Jupiter
( Junit5
)中進行參數化測試?
@RunWith(Parameterized.class)
背景:
我經歷了如何編寫接口的junit測試? 並希望實施測試用例在這里找到答案使用JUnit5。 但是在Jupiter包中找不到相同的類/ es。
嘗試:
進一步尋找替代品,我發現Extensions將替換@RunWith,如遷移提示中所述
@RunWith不再存在; 被@ExtendWith取代。
我嘗試定義這里的示例中提供的CustomExtension
- MockitoExtension但是無法成功使用參數化類的實例。
期待有關如何使用在JUnit5
實現它的類的參數化實例測試接口的建議。
JUnit 5 M4剛剛發布,現在支持參數化測試。
這是“Hello World”示例:
@ParameterizedTest
@ValueSource(strings = { "Hello", "World" })
void testWithStringParameter(String argument) {
assertNotNull(argument);
}
有關完整文檔和其他示例,請參閱“ 用戶指南” 。
隨着2017年1月9日的,JUnit的5不支持參數測試本身,而是該功能的工作正在進行中 。 請注意,您可以通過動態測試實現類似的功能 。
也就是說,我會考慮兩種不好的方法來實現接口測試,而JUnit Jupiter提供了兩種更好的方法:
您可以使用動態測試 :
@TestFactory
Stream<DynamicTest> params() {
return Stream.of(new double[][]{{2d, 4d}, {3d, 9d}, {4d, 16d}}).
map(i ->
dynamicTest("Square root test " + Arrays.toString(i),
() -> assertEquals(i[0], Math.sqrt(i[1]))
)
);
}
在我的項目中,我一直在使用這個庫:
https://github.com/TNG/junit-dataprovider/
為了給我的JUnit測試添加參數化。 我一直在使用版本4.x,但從未成為它提供的嵌入式參數化的粉絲。 如果您熟悉TestNg的@DataProvider,那么這個擴展名沒有太大區別。
檢查一下,看看它對我和我的團隊是否有任何好處。 坦率地說,我無法想象現在沒有它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.