java - 在 JUnit 测试用例中使用不同的数据子集测试不同的方法

标签 java junit parameterized parameterized-unit-test

假设我有一个 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/

相关文章:

java - 单机如何共享线程池?

java - 使用带位图的 Universal ImageLoader 显示图像

java - 覆盖 liferay-ui 导航标签库

java - 是否可以将 Android JUnit 测试套件压缩到 JAR 文件中?

c# - 在 C# 中允许用户定义的字符串

c# - 如果我通过ParameterizedThreadStart将对象传递给线程,我以后可以访问它吗?

java - Jackson JsonSchema - 模式中作为字符串的对象

java - Junit - Java 如何处理具有断言的类方法

java - 我该如何测试这个?

具有参数化列表的 Java 继承