当使用JUnit的@Parameterized时,我可以让一些测试仍然只运行一次

cen*_*tic 36 java junit parameterized junit4

@Parameterized在很多情况下使用多个排列运行测试.这非常有效并且使测试代码本身变得简单和干净.

但是有时候我想让一些测试方法只运行一次,因为它们没有使用参数,JUnit是否有办法将测试方法标记为"singleton"或"run-once"?

注意:这不涉及在Eclipse中运行单个测试,我知道如何做到:)

Ste*_*ner 72

您可以使用Enclosed runner来构建测试.

@RunWith(Enclosed.class)
public class TestClass {

    @RunWith(Parameterized.class)
    public static class TheParameterizedPart {

        @Parameters
        public static Object[][] data() {
            ...
        }

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

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

    public static class NotParameterizedPart {
        @Test
        public void someTest() {
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 11

您可以使用套件将任意数量的测试类关联起来.这样,当您测试课程时,所有测试都会运行,您可以混合不同的测试跑步者.

  1. 创建与您正在测试的类关联的测试套件
  2. 添加对参数化测试类的引用
  3. 添加包含非参数化测试的其他类.

    import org.junit.runners.Suite;
    import org.junit.runner.RunWith;
    
    @RunWith(Suite.class)
    @Suite.SuiteClasses({ParameterizedTestClass.class, UnitTests.class, MoreUnitTests.class})
    public class SutTestSuite{
         //Empty...
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 是的,这可能是我最终会得到的,我希望有一些类似于单一测试方法的注释... (3认同)