Генерация XML-файлов, используемых отчетами JUnit - PullRequest
11 голосов
/ 30 января 2012

Я хочу создавать тестовые отчеты, сгенерированные JUnit / TestNG ПРОГРАММНО. Итак, это исключает ANT. Моя главная задача - генерировать файлы XML, которые создаются Junit при выполнении тестовых случаев. Я читал, что RunListener может помочь мне достичь этого, но я не смог понять, как? Я использую Selenium для создания своих тестов.

Как я могу сгенерировать файлы XML, созданные JUnit?

Ответы [ 3 ]

10 голосов
/ 30 января 2012

JUnit не генерирует отчеты XML.Для JUnit не существует стандартного формата вывода XML.

Другие инструменты генерируют XML, такие как Ant / Maven.Поэтому первое, что вам нужно сделать, это решить, какую форму XML-файла вы хотите, как и то, что вы хотите сделать с файлами после их создания.

И, собственно, ваше ограничение программноне исключает ANT.Вы можете вызывать муравья программно (см. Вызов муравья из Java, а затем возврат в Java после завершения муравья ).Возможно, это будет самый простой способ создания файлов, совместимых с ant.

Если вы хотите создать свои собственные файлы XML, то вы можете создать класс, который расширяет RunListener , а затемзапустите ваши тесты, вызвав JUnitCore # run () или аналогичный.

public void main(String... args) {
    JUnitCore core= new JUnitCore();
    core.addListener(new RingingListener());
    core.run(MyTestClass.class);
}

Ваш RunListener просто выдаст соответствующий XML.Это довольно легко понять: переопределить методы testRunStarted () и т. Д. И записать XML.Для примера того, как это работает, см. TextListener , который делает то же самое, но для текста.

4 голосов
/ 23 февраля 2012

XML-файлы генерируются ant-junit, и мы можем сделать это с помощью программы, код будет выглядеть следующим образом:

Project project = new Project();
JUnitTask task = new JUnitTask();
project.setProperty("java.io.tmpdir",String); //set temporary directory
task.setProject(project);
JUnitTask.SummaryAttribute sa = new JUnitTask.SummaryAttribute();
sa.setValue("withOutAndErr");
task.setFork(false);
task.setPrintsummary(sa);
FormatterElement formater = new FormatterElement();         
FormatterElement.TypeAttribute type = new FormatterElement.TypeAttribute();
type.setValue("xml");
formater.setType(type);
task.addFormatter(formater);
JUnitTest test = new JUnitTest(String);// set Test.class.getname()          
test.setTodir(File); // set Location for your report
task.addTest(test);         
task.execute();
0 голосов
/ 30 января 2012

Вы спросили почти то же самое здесь Если вы посмотрите на документ TestNG, вы можете использовать:

Интерфейс org.testng.IReporter, который имеет только один метод: public void generateReport (Список наборов, String outputDirectory) Этот метод будет вызван TestNG, когда все наборы будут запущены, и вы можете проверить его параметры, чтобы получить доступ ко всей информации о только что завершенном запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...