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;
}
}
这不应该真正发挥作用。 你的目的是把注释为常数阵内。 即使你有过去的这个问题,编译器会拒绝它。 你需要做的是这样的:
@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.
}
}
@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, ...);