我正在尝试从Eclipse插件运行一些JUnit 4测试,但我只会遇到以下故障:
initializationError(testpkg.TestClass):没有可运行的方法
测试课非常简单:
package testpkg;
(...)
public class TestClass {
@Test
public void test() {
System.out.println("Test run");
Assert.assertTrue(true);
}
}
当我在一个简单的java项目中以编程方式运行它时,它可以工作,但不能在Eclipse插件中运行:
public class DiscoverHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
(...)
File file = new File("C:(...)\\target\\test-classes"); //The .class file
URLClassLoader classLoader = new URLClassLoader(new URL[] file.toURI().toURL()});
JUnitCore.runClasses(classLoader.loadClass("testpkg.TestClass")).getFailures().forEach(c -> System.out.println(c.toString()));
}
}
简单Java项目中的相同代码实际上会打印“Test run”字符串。
有谁知道这个错误可能来自哪里? 谢谢
答案 0 :(得分:1)
我终于设法做到了这一点:
URLClassLoader classLoader = new URLClassLoader(new URL[]{file.toURI().toURL()}, this.getClass().getClassLoader());
而不是:
URLClassLoader classLoader = new URLClassLoader(new URL[] file.toURI().toURL()});
我无法解释为什么这样做有效。如果有人有答案,我很乐意知道。