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

Run JUnit test programmatically loading different .class files

我目前能够 运行 以编程方式执行 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 能够 "see" Sommatore。

提前感谢您的回答!继续努力!

您只需要确保提供给您的 URLClassLoaderURL 与您的测试 class 的 根文件夹 匹配或使用包含您的测试 class 的 jar 文件

在你的情况下,你似乎使用了一个目录,所以假设你的 class 的 FQN 是 my.package.MyTest 并且文件 MyTest.class 在目录 /my/class/dir/my/package 中,那么您需要确保 URL 与测试的根文件夹 class 匹配,在本例中为 /my/class/dir/.