以编程方式运行JUnit测试加载不同的.class文件

时间:2016-10-08 16:28:43

标签: java reflection junit classloader dynamic-class-loaders

我目前能够以编程方式运行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必须与Sommatore.class在同一目录下才能工作。所以我想知道是否有可能运行Junit测试,从同一个ClassLoader中的不同目录中加载单独的.class文件,使SommatoreTest能够&#34;看到&#34; Sommatore。

提前感谢您的回答!并保持良好的工作!

1 个答案:

答案 0 :(得分:0)

您只需要确保提供给URL的{​​{1}}与您的测试类的根文件夹 jar文件包含您的测试类。

在您的情况下,您似乎使用了一个目录,因此假设您的类的FQN为URLClassLoader而文件my.package.MyTest位于目录MyTest.class中,那么您需要制作确保/my/class/dir/my/package与测试类的根文件夹匹配,在这种情况下URL