Ответ 1
В библиотеке JUnit нет параметров вывода XML. Чтобы достичь такой цели, вам нужно написать свой собственный RunListener, который прослушивает вывод и будет в вашем случае писать XML файл.
Однако, чтобы получить XML файл в правильном формате, чтобы он мог быть прочитан системой CI, я думаю, было бы гораздо проще просто использовать ant либо через командную строку, используя build.xml(JUnitReport) или с помощью java api: Как я могу использовать Apache ANT Programmatically.
EDIT: сначала у нас было четыре варианта:
- Используйте ANT из командной строки
- Используйте программный код ANT (используя Java API)
- Используйте XMLJUnitResultFormatter непосредственно с помощью JUnitCore
- Создайте собственный RunListener, который создает правильный вывод XML.
Учитывая ограничения, добавленные OP, мы не можем использовать ANT из командной строки, что исключает 1.
После более пристального изучения задачи ANT JUnit представляется невозможным использовать это с JUnitCore (добавление TestListener), потому что ANT напрямую использует имя тестового класса, поэтому вы не можете делать класс моста. Из XMLJUnitResultFormatter.java
private void formatError(String type, Test test, Throwable t) {
...
nested.setAttribute(ATTR_TYPE, t.getClass().getName());
String strace = JUnitTestRunner.getFilteredTrace(t);
Text trace = doc.createTextNode(strace);
nested.appendChild(trace);
}
Это устраняет 3.
Вызвать ANT программным путем через API Java. Я не могу найти недавнюю документацию по этому вопросу. Это кажется трудным.
Итак, наконец, я бы сделал 4, пользовательский RunListener, используя код из XMLJUnitResultFormatter в качестве базы. И затем, я бы опубликовал его на github.com, так что на этот вопрос можно было бы ответить правильно: -)