是否可以将java.io.FIle传递给JUnitCore.runClasses()呢

是否可以将java.io.FIle传递给JUnitCore.runClasses()呢,java,junit,Java,Junit,我正在尝试使用JUnitCore.runClasses(),我可以使用以下代码让它运行 JUnitCore.runClasses(testClass.class); 但我很好奇,因为runClasses()可以接受任意数量的参数,是否可以使用类似以下的代码 Class c = testClass.class; JUnitCore.runClasses(c); 或 List c=newarraylist{test1.class,test2.class,test3.class}; runClas

我正在尝试使用JUnitCore.runClasses(),我可以使用以下代码让它运行

JUnitCore.runClasses(testClass.class);
但我很好奇,因为runClasses()可以接受任意数量的参数,是否可以使用类似以下的代码

Class c = testClass.class;
JUnitCore.runClasses(c);

List c=newarraylist{test1.class,test2.class,test3.class};
runClasses(c);
我问这个问题的时候,就好像您试图将java.io.File类型传递给JUnitCore.runClasses()一样,您会得到以下错误

no suitable method found for runClasses(java.io.File)
method org.junit.runner.JUnitCore.runClasses(java.lang.Class<?>...) is not applicable
  (argument type java.io.File does not conform to vararg element type java.lang.Class<?>)
method org.junit.runner.JUnitCore.runClasses(org.junit.runner.Computer,java.lang.Class<?>...) is not applicable
  (actual argument java.io.File cannot be converted to org.junit.runner.Computer by method invocation conversion)
找不到适合运行类的方法(java.io.File)
方法org.junit.runner.JUnitCore.runClasses(java.lang.Class…)不适用
(参数类型java.io.File不符合vararg元素类型java.lang.Class)
方法org.junit.runner.JUnitCore.runClasses(org.junit.runner.Computer,java.lang.Class…)不适用
(实际参数java.io.File无法通过方法调用转换转换为org.junit.runner.Computer)

我假设您正在尝试执行以下操作:

您有一个包含要使用JUnitCore运行的java类的文件

要完成此任务,您必须:

  • 加载类,这可以通过使用自定义类装入器来完成。更好的方法是将类包含到应用程序中
  • 现在可以调用JUnitCore.runClasses(loadedClass) 代码示例:

    File file = new File("path to your file");
    File dir = file.getParentFile();
    URL url = new URL("file://" + dir.getAbsolutePath());
    URLClassLoader classLoader = new URLClassLoader(new URL[]{url});
    Class<?> clazz = classLoader.findClass("ClassName");
    JUnitCore.runClasses(clazz);
    
    File File=新文件(“文件路径”);
    File dir=File.getParentFile();
    URL=新URL(“文件:/”+dir.getAbsolutePath());
    URLClassLoader classLoader=新URLClassLoader(新URL[]{URL});
    Class clazz=classLoader.findClass(“ClassName”);
    JUnitCore.runClasses(clazz);
    

    该示例仅在类没有包的情况下有效。您可以编写自己的类装入器来控制类装入过程。请参阅以了解此类加载器的工作原理。对于编写自定义类加载器,您可以参考。

    您还可以创建一个包含所有TestClass的TestSuite类。然后你可以打电话过来

    JunitCore.runClasses(TestSuite.class);
    
    TestSuite类包含测试类的列表,例如

    @RunWith(Suite.class)
    @Suite.SuiteClasses({
        Test1.class,
        Test2.class
    })
    

    如何将类实例分配给File类型的变量?你想达到什么目的?我只是在脑子里胡思乱想真的。。。我假设您可以将文件设置为.class文件,不是吗?不,java.lang.class不可分配给java.io.file.Yes,但当您尝试将其传递给方法时,java不会将其视为类对象。就像一个恰好有扩展名.classIs的文件一样,有没有办法做到这一点?是的,这正是我想要做的。。。我要试一试,所以
    @RunWith(Suite.class)
    @Suite.SuiteClasses({
        Test1.class,
        Test2.class
    })