多次运行特定的JUnit测试,但排除其他人多次运行

时间:2016-01-28 06:57:08

标签: java unit-testing junit junit4

我正在使用Parameterized JUnit运行程序多次运行我的一些测试。这是我的测试类的模板

@RunWith(value = Parameterized.class)
public class TestClass {

    private String key;
    private boolean value;

    public TestClass(String key, boolean value) {
        this.key = key;
        this.value = value;
    }

    @Parameters
    public static Collection<Object[]> data() {
        Object[][] data = new Object[][] {
            {"key1", true},
            {"key2", true},
            {"key3", false}
        };
        return Arrays.asList(data);
    }

    @Test
    public void testKeys() {
        ...
    }

    @Test
    public void testValues() {
        ...
    }

    @Test
    public void testNotRelatedKeyValue() {
    }
}

现在,我希望我的测试方法 - testKeys(), testValues()能够运行它们正在运行的不同参数值。

但是,我的最后一个方法 - testNotRelatedKeyValue()也在执行多次以及其他参数化测试。

我不希望testNotRelatedKeyValue()多次运行,只需运行一次。

这个类是否可以或者我需要创建一个新的测试类?

1 个答案:

答案 0 :(得分:2)

您可以使用Enclosed runner构建测试。

@RunWith(Enclosed.class)
public class TestClass {

    @RunWith(Parameterized.class)
    public static class TheParameterizedPart {
        @Parameter(0)
        public String key;

        @Parameter(1)
        private boolean value;

        @Parameters
        public static Object[][] data() {
            return new Object[][] {
                {"key1", true},
                {"key2", true},
                {"key3", false}
            };
        }

        @Test
        public void testKeys() {
            ...
        }

        @Test
        public void testValues() {
            ...
        }
    }

    public static class NotParameterizedPart {
        @Test
        public void testNotRelatedKeyValue() {
            ...
        }
    }
}