Запустите тест 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/
,