有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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() {        
        }
    }

共 (2) 个答案

  1. # 1 楼答案

    K.Sierra摘自《SCJP研究指南》: “请记住,通配符只能用于引用声明 (包括参数、变量、返回类型等)。它们不能用作 创建新类型集合时键入参数。想想看 引用可以是抽象的和多态的,创建的实际对象必须是 具体类型。“

    List<?> foo = new ArrayList<? extends Animal>();
    

    问题:不能在对象创建中使用通配符符号。所以 新的ArrayList()将无法编译

    编辑: @artbristol指出了另一个问题,即传递给注释的编译时常量。看看这个帖子中的回复,它们可能会有所帮助。其中一个建议使用ENUM作为解决方案。 How to use an array constant in an annotation

  2. # 2 楼答案

    不幸的是,不能。注释需要采用编译时常量,所以必须使用{ MyClass.class, MyNewClass.class }