Запустите тест JUnit программно, загружая различные файлы.class

В настоящее время я могу запустить тест 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, загружая отдельно файлы.class из разных каталогов в одном и том же ClassLoader, позволяя SommatoreTest "видеть" Sommatore.

Заранее спасибо за ваш ответ! И продолжайте в том же духе!

1 ответ

Решение

Вам просто нужно убедиться, что URL предоставляется вашему URLClassLoader соответствует корневой папке вашего тестового класса или jar-файлу, содержащему ваш тестовый класс.

В вашем случае вы, кажется, используете каталог, поэтому предполагая, что FQN вашего класса my.package.MyTest и файл MyTest.class находится в каталоге /my/class/dir/my/packageто вам нужно убедиться, что URL будет соответствовать корневой папке вашего тестового класса, который будет в этом случае /my/class/dir/,

Другие вопросы по тегам