SuiteClasses语法的Java JUnit类数组
目前我有以下代码来测试我的类
@RunWith(Suite.class)
@SuiteClasses( { MyClass.class, MyNewClass } )
public class AllTests {
public static void suite() {
}
}
我想做的是以下内容,但它在语法上不正确-正确的格式是什么
Class<?>[] classArray = new Class<?>[] {
MyClass.class, MyNewClass.class
};
@RunWith(Suite.class)
@SuiteClasses( classArray )
public class AllTests {
public static void suite() {
}
}
# 1 楼答案
K.Sierra摘自《SCJP研究指南》: “请记住,通配符只能用于引用声明 (包括参数、变量、返回类型等)。它们不能用作 创建新类型集合时键入参数。想想看 引用可以是抽象的和多态的,创建的实际对象必须是 具体类型。“
问题:不能在对象创建中使用通配符符号。所以 新的ArrayList()将无法编译
编辑: @artbristol指出了另一个问题,即传递给注释的编译时常量。看看这个帖子中的回复,它们可能会有所帮助。其中一个建议使用ENUM作为解决方案。 How to use an array constant in an annotation
# 2 楼答案
不幸的是,不能。注释需要采用编译时常量,所以必须使用
{ MyClass.class, MyNewClass.class }