假设我有一个 JUnit 测试用例:
@RunWith(Parameterized.class)
public class TestMyClass {
@Parameter
private int expected;
@Parameter
private int actual;
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 0,1 }, { 1,2 }, { 2,3 }, { 3,4 }, { 4,5 }, { 5,6 },{ 6,7 }
});
}
@Test
public void test1 { //test }
@Test
public void test2 { //test }
}
我只想用 {0,1}、{1,2} 和 {2,3} 运行 test1 并仅使用 {3,4}、{4,5} {5,6}
运行 test2我怎样才能做到这一点?
编辑:参数在运行时从文件中读取。
最佳答案
似乎没有办法使用 JUnit 标准“@Parameters”东西在一次类中对不同的测试使用不同的参数集。 你可以试试 junit-dataprovider .它类似于 TestNG 数据提供者。 例如:
@RunWith(DataProviderRunner.class)
public class TestMyClass {
@DataProvider
public static Object[][] firstDataset() {
return new Object[][] {
{ 3,4 }, { 4,5 }, { 5,6 },{ 6,7 }
};
}
@DataProvider
public static Object[][] secondDataset() {
return new Object[][] {
{ 3,4 }, { 4,5 }, { 5,6 },{ 6,7 }
};
}
@Test
@UseDataProvider("firstDataset")
public void test1(int a, int b) { //test }
@Test
@UseDataProvider("secondDataset")
public void test2(int a, int b) { //test }
}
或者您可以为每个测试创建 2 个类。
不过我觉得用junit-dataprovider更方便。
关于java - 在 JUnit 测试用例中使用不同的数据子集测试不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736320/