2015-12-30 3 views
1

Я понимаю, что если я хочу получить xml из моих тестов jUnit, я могу использовать задачу Ant «jUnit» для генерации такого вывода. Я хочу увеличить объем информации, отображаемой в этом сгенерированном XML-файле. У меня есть дополнительная информация в моем файле класса, который я хочу также получить в файле XML.Как jUnit Task получает свою информацию

Мои вопросы:

  • Где информация в файле XML приходит?
  • Используется ли информация, исходящая от конкретного класса бегущего jUnit, который используется для запуска тестов?
  • Выполняет ли задание jUnit только полученную информацию или составляет , генерируя информацию самостоятельно?
  • Задача jUnit Ant изменить полученную информацию? (Так будет только показать конкретную информацию и отфильтровать все, что хочет оных)

ответ

2

XML форматтер JUnit задачи является реализованным в классе org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter, слушатель, который принимает события во время выполнения тестов JUnit. Например, когда получено событие с завершением теста, форматер добавляет XML-элемент в память для теста. Here - ссылка на исходный код.

Основываясь на том, что я прочитал из кода:

  • Схема из XML определяется в коде Ant задачи. В частности, вышеупомянутый класс. Схема обсуждается в Spec. for JUnit XML Output. Содержание отчета, например. имя теста и имя класса извлекаются из самих тестовых классов JUnit. Вот Javadoc для метода, который получает название теста:

    JUnit 3.7 вводит TestCase.getName() и последующие версии JUnit удалить метод старого названия(). Этот метод обеспечивает доступ к имени TestCase посредством отражения, которое должно работать с версией до и после JUnit 3.7.

    Начиная с Ant 1.5.1 этот метод будет вызывать "public String getName()" при любой реализации теста, если он существует.

    Поскольку Ant 1.7 также явно проверяет JUnit4TestCaseFacade. Это используется junit.framework.JUnit4TestAdapter.

  • Задача не только форматирует выход. Он генерирует весь отчет сам с использованием упомянутого форматирования. Несколько сообщений, которые могут быть полезны для расширения форматировщик:

    How do I configure JUnit Ant task to only produce output on failures?

    Custom JUnit Report?

    Предлагаемое решение написать пользовательский класс форматера расширения org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter и предоставить его в атрибуте formatter элемента classname ,