[英]How to pass dynamic stream arguments in a method in parametrized tests (Junit5)
[英]Different Parametrized arguments for different Tests JUNIT
好的,所以我正在為項目構建測試用例,並且正在使用JUnit進行測試。 現在我面臨的問題是,對於同一文件的不同測試用例,我需要使用不同的參數集。
public class ForTesting{
//Test 1 should run on ips {1, true} and {2,true}
@Test
public void Test1()
{
//Do first Test case
}
//Test 2 should run on ips {3,true} and {4,true}
@Test
public void Test2()
{
//Do another Test case
}
}
我知道我可以使用參數化參數提供多個參數,但是問題是所有測試用例都運行相同的參數集。 有沒有辦法做到這一點?
如果您不只是在尋找標准的junit參數化測試,並且根據公司的法律政策,則可以(至少)使用以下2個庫,這使事情更容易(實現和閱讀):
1) JUnitParams (Apache 2)
@RunWith(JUnitParamsRunner.class)
public class PersonTest {
@Test
@Parameters({"17, false",
"22, true" })
public void shouldDecideAdulthood(int age, boolean expectedAdulthood) throws Exception {
assertThat(new Person(age).isAdult(), is(expectedAdulthood));
}
}
2) Zohhak (LGPL)受JUnit參數啟發,但為表帶來了更多的糖 (簡單的分隔符配置,轉換器等)
@RunWith(ZohhakRunner.class)
public class PersonTest {
@TestWith({"17, false",
"22, true" })
public void shouldDecideAdulthood(int age, boolean expectedAdulthood) throws Exception {
assertThat(new Person(age).isAdult(), is(expectedAdulthood));
}
}
幾種選擇:
使用理論 。
在@Theory中,使用Assume.assumeThat 。
@Theory
public void shouldPassForSomeInts(int param) {
Assume.assumeTrue(param == 1 || param == 2);
}
@Theory
public void shouldPassForSomeInts(int param) {
...
}
或使用@TestedOn 。
@Theory
public void shouldPassForSomeInts(@TestedOn(ints={1, 2}) int param) {
...
}
@Theory
public void shouldPassForSomeInts(@TestedOn(ints={3,4}) int param) {
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.