我目前能够以编程方式运行JUnit测试,这样做:
JUnitCore junit = new JUnitCore();
Result result = new Result();
File root = new File("rootWhereSommatoreTest.classIS");
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[]{root.toURI().toURL() });
Class<?> cls = classLoader.loadClass("SommatoreTest");
result = junit.run(cls);
return result;
我不喜欢这段代码的地方是SommatoreTest.class必须和sommatoreclass在同一个目录下才能工作。所以我想知道是否有可能运行Junit测试,在同一个ClassLoader中从不同目录分别加载。class文件,使SommatoreTest"看到"Sommatore。
提前感谢您的回答!再接再厉!
您只需要确保提供给URLClassLoader
的URL
与测试类的根文件夹或包含测试类的jar文件匹配。
在您的情况下,您似乎使用目录,因此假设您的类的FQN是my.package.MyTest
,文件MyTest.class
在目录/my/class/dir/my/package
中,那么您需要确保URL
将与您的测试类的根文件夹匹配,在这种情况下将是/my/class/dir/
。