Junit的SuiteClasses与类的静态列表(Junit SuiteClasses with

2019-06-24 16:03发布

SuiteClasses将工作只是像类的列表罚款{Test1.class,Test2.class}但是当我尝试生成的类的静态列表,它说,不兼容的类型:需要java.lang.Class<?>却发现java.lang.Class<?>[]

我在想什么?

@RunWith(Suite.class)

@Suite.SuiteClasses(TestSuite.classes)
public class TestSuite {

    public static Class<?> [] classes;

    static {
       classes = new Class<?> [1];
       classes[0] = MyTest.class;
    }
}

Answer 1:

这不应该真正发挥作用。 你的目的是把注释为常数阵内。 即使你有过去的这个问题,编译器会拒绝它。 你需要做的是这样的:

@RunWith(Suite.class)

@Suite.SuiteClasses({MyTest.class, MyOtherTest.class})
public static class TestSuite {
}

请注意花括号。

我敢肯定你所想要知道的是能够建立的类的列表中动态套件。

我提交了一份请求,向他们允许,但在平均时间只有这样,才能做到这一点是继承套件类,如下所示:

public class DynamicSuite extends Suite {

    public DynamicSuite(Class<?> setupClass) throws InitializationError {
       super(setupClass, DynamicSuiteBuilder.suite());
    }
}


@RunWith(DynamicSuite.class)
public class DynamicSuiteBuilder {
   public static Class[] suite() {
         //Generate class array here.
   }
}


Answer 2:

@SuiteClasses是在org.junit.runners.Suite.SuiteClasses JUnit中4.4中定义的类注释。 它可以让你在前面的问题中所述定义一个套件类。

顺便说一句,JUnit的4.4的API文档具有为org.junit.runners.Suite类(Suite.html)的主要错字。

使用套件作为一个亚军允许你手动构建一个包含许多类测试套件。 它是JUnit 4中等效JUnit的3.8.x静态测试的suite()方法。 要使用它,注释与类@RunWith(Suite.class)@SuiteClasses(TestClass1.class, ...) 当你运行这个类,它将运行在所有的套件类的所有测试。

@SuiteClasses(TestClass1.class, ...)应改为@Suite.SuiteClasses({TestClass1.class, ...})

有人在的JUnit 4.4提供了构建测试套件的错误信息。 不遵循这样的:

JUnit提供工具来定义要运行的套件,并显示其结果。 要运行测试,并在控制台上看到的结果,运行:

org.junit.runner.TextListener.run(TestClass1.class, ...);


文章来源: Junit SuiteClasses with a static list of classes
标签: java junit4