Как запустить тестовые случаи в списке несколько разных jar-файлов?
Вопрос
У меня есть список jar-файлов, все из которых содержат несколько разные версии одной и той же системы.
Я хочу выполнить набор тестовых случаев для каждого файла jar, чтобы получить результаты для каждого файла jar (через RunListener или что-то в этом роде).
Я немного запутался с предполагаемыми проблемами с загрузкой классов.
Как я могу красиво это сделать?
Решение
Если вы используете ant, задача JUnit принимает путь к классам.
<target name="test">
<junit ...">
<classpath>
<pathelement path="${test.jar.path}" />
</classpath>
...
</junit>
</target>
Вы можете использовать задачу antcall для многократного вызова цели теста с другим значением свойства test.jar.path.
Другие советы
Если jar-файлы поддерживают один и тот же интерфейс, все, что вам нужно сделать, - это запустить каждый тест с немного отличным путем к классу - каждый раз с jar-файлами из другой версии.
Если вы используете интеграцию Eclipse JUnit, просто создайте N конфигураций прогонов, в каждой из которых на вкладке classpath укажите необходимые файлы jar.
Если вы хотите сделать это программно, тогда я предлагаю вам начать с пустого пути к классу и использовать URLClassLoader , каждый раз предоставляя разный набор jar-файлов.
Примерно так:
URLClassloader ucl = new URLClassLoader( list of jars from version1 );
TestCase tc = ucl.loadClass("Your Test Case").newInstance();
tc.runTest();
ucl = new URLClassLoader( list of jars from version2 );
TestCase tc = ucl.loadClass("Your Test Case").newInstance();
tc.runTest();