Моя программа получает в качестве входных данных файл jar, а каталог содержит исходный код Java. Файл jar содержит тестовые примеры, которые следует запускать на входных исходных кодах Java. Если я определяю входной каталог java как исходную папку, я могу загрузить тестовые примеры и запустить их, как показано ниже:
URLClassLoader clsLoader = URLClassLoader.newInstance(new URL[] {new URL("file:/D:/workspace/tests.jar")});
//the name of my test case class that I want to load
Class cls = clsLoader.loadClass("temp.testMulDiv");
Result result = new JUnitCore().run(cls);
for (Failure failure : result.getFailures())
System.out.println(failure.toString());
Однако, пока я помещаю исходный код в качестве входного каталога, тестовые примеры не могут найти код. Я знаю, что должен каким-то образом сказать тест-кейсам искать исходный код во входном каталоге, но я не знаю, как это сделать. Любое предложение?
Я также проверяю этот кусок кода, но все же у меня есть вышеуказанная проблема. Пока я могу загрузить метод, который я хочу запустить, но в этом случае «Class.forName» не может найти класс («temp.testMulDiv»), и я получаю ошибку «ClassNotFoundException».
URLClassLoader clsLoader = URLClassLoader.newInstance(new URL[] {new URL("file:/D:/workspace/tests.jar")});
//the name my test case class that I want to load
Class cls = clsLoader.loadClass("temp.testMulDiv");
Method[] methods = cls.getDeclaredMethods();
// I want to run only the first method
Request request = Request.method(Class.forName(cls.getName()), methods[0].getName());
Result result = new JUnitCore().run(request);
for (Failure failure : result.getFailures())
System.out.println(failure.toString());
}
Любое предложение, как я могу запускать тестовые примеры во входном каталоге (а не в исходной папке)? Как программно я могу это сделать?