Дополнение отчета о тестировании JUnit с помощью JavaDoc - PullRequest
35 голосов
/ 10 ноября 2011

Для клиента нам необходимо создать подробные тестовые отчеты для интеграционных тестов, которые показывают не только, что все зеленое, но также и то, что сделал тест. Мои коллеги и я - ленивые ребята, и мы не хотим взламывать электронные таблицы или текстовые документы.

Для этого я думаю о способе документирования более сложных интеграционных тестов с комментариями JavaDoc для каждого аннотированного метода @Test и каждого тестового класса. Для тестирующих это хорошая помощь, чтобы увидеть, с каким требованием, билетом Jira или с чем связан тест, и что на самом деле пытается сделать тест. Мы также хотим предоставить эту информацию нашим клиентам.

Большой вопрос сейчас: как мы можем поместить JavaDoc для каждого метода и каждого тестового класса в отчеты JUnit? Мы используем JUnit 4.9 и Maven.

Я знаю, что есть описание для каждого assertXXX (), но нам действительно нужен был бы хороший список HTML в качестве результата или документ PDF, в котором перечислены все классы и документация, а также все методы @Test и их описание, время тестирования, результат и, если не удалось, причина.

Или есть другая альтернатива для создания необычных тестовых сценариев? (Или мы должны начать проект OpenSource на этом !? ;-))

Обновление: Я задал еще один вопрос о том, как добавить RunListener в Eclipse, чтобы он также сообщал в Eclipse, когда начинал там. Предлагаемое решение с пользовательским TestRunner - еще одна возможность получить отчет о результатах тестирования. Посмотрите: Как я могу использовать JUnit RunListener в Eclipse?

Ответы [ 6 ]

22 голосов
/ 17 ноября 2011

Одним из способов достижения этого было бы использование пользовательского RunListener с предупреждением о том, что было бы проще использовать аннотацию, а не Javadoc. Вам необходимо иметь пользовательскую аннотацию, такую ​​как:

@TestDoc(text="tests for XXX-342, fixes customer issue blahblah")
@Test
public void testForReallyBigThings() {
    // stuff
}

RunListener прослушивает события теста, такие как начало теста, конец теста, неудача теста, успешность теста и т. Д.

public class RunListener {
    public void testRunStarted(Description description) throws Exception {}
    public void testRunFinished(Result result) throws Exception {}
    public void testStarted(Description description) throws Exception {}
    public void testFinished(Description description) throws Exception {}
    public void testFailure(Failure failure) throws Exception {}
    public void testAssumptionFailure(Failure failure) {}
    public void testIgnored(Description description) throws Exception {}
}

Описание содержит список аннотаций, примененных к методу теста, поэтому, используя приведенный выше пример, вы можете получить Annotation TestDoc, используя:

description.getAnnotation(TestDoc.class);

и извлеките текст как обычно.

Затем вы можете использовать RunListener для генерации нужных вам файлов с текстом, относящимся к этому тесту, независимо от того, пройден тест или нет, или было проигнорировано время выполнения и т. Д. Это будет ваш пользовательский отчет.

Затем, в определенном случае, вы можете указать пользовательский слушатель, используя:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.10</version>
  <configuration>
    <properties>
      <property>
        <name>listener</name>
        <value>com.mycompany.MyResultListener,com.mycompany.MyResultListener2</value>
      </property>
  </configuration>
</plugin>

Это из Плагин Maven Surefire, Использование JUnit, Использование пользовательских слушателей и репортеров

Недостатком этого решения является то, что у вас нет гибкости javadoc в отношении возврата каретки, форматирования, но оно имеет то преимущество, что документация находится в одном конкретном месте, аннотации TestDoc.

5 голосов
/ 11 ноября 2011

Вы просматривали отчеты Maven Sure-fire?

Вы можете создать отчет в формате HTML из своих тестов JUnit.

http://maven.apache.org/plugins/maven-surefire-report-plugin/

Я не уверен, насколько это настраиваемо.Но это хорошая отправная точка.

Я также знаю, что TestNG (альтернатива JUnit) имеет некоторые возможности генерации отчетов.http://testng.org/doc/documentation-main.html#logging-junitreports

Я бы также порекомендовал log4j http://logging.apache.org/log4j/1.2/manual.html

2 голосов
/ 28 ноября 2012

вы можете использовать jt-report отличную основу для отчетов по тестам.

1 голос
/ 16 ноября 2011

Я создал программу, использующую testNG и iText, которая выводит результаты теста в красивый отчет в формате PDF.Вы можете поместить описание вашего теста в тег @Test, который также может быть включен в отчет .pdf.Он обеспечивает время выполнения тестов и для всего пакета.В настоящее время он используется для тестирования веб-приложений с селеном, но эту часть можно игнорировать.Он также позволяет запускать несколько наборов тестов за один прогон, а если тесты не пройдены, он позволяет перезапускать только те тесты без необходимости повторного запуска всего набора, и эти результаты будут добавлены в исходный PDF-файл результатов.Смотрите ниже изображение для ссылки на источник, если вы заинтересованы.Я не возражаю против того, чтобы это стало проектом с открытым исходным кодом, так как у меня хорошее начало, хотя я не уверен, как это сделать.Вот скриншот enter image description here

Итак, я разобрался, как создать проект на sourceforge.Вот ссылка ссылка на sourceforge

0 голосов
/ 20 ноября 2011

Может быть, стоит взглянуть на инструменты "исполняемой спецификации" / BDD, такие как FIT / FitNesse, Concordion, Cucumber, JBehave и т. Д.

С этой практикой у вас будет возможность не только формально удовлетворить требования клиента, но вы сможете вывести прозрачность на новый уровень.

Короче говоря, все эти инструменты позволяют вам (или, лучше говоря, клиенту) определять сценарии с использованием естественного языка или таблиц, определять привязку конструкций естественного языка к реальному коду и запускать эти сценарии и видеть, успешно ли они работают или нет. На самом деле у вас будет «живая» спецификация, которая показывает, что уже работает, как ожидалось, а что нет.

Смотрите хорошее обсуждение этих инструментов: Каковы различия между средами BDD для Java?

0 голосов
/ 20 ноября 2011

Как уже упоминалось выше, Maven, безусловно, путь. Это делает жизнь по-настоящему легкой. Вы можете легко создать проект maven, используя плагин m2eclipse. Как только это будет сделано. Просто запустите эти команды:

cd <project_dir_where_you_have_pom_file>
mvn site:site

Эта команда создаст таблицы стилей для вас. В том же каталоге запустите:

mvn surefire-report:report

Это запустит контрольные примеры и преобразует вывод в html. Вы можете найти результат в 'target / site / surefire-report.html'.

Ниже приведен фрагмент. Как видите, все тестовые примеры (написанные на JUnit) показаны в html. Другая мета-информация, такая как общее количество выполненных тестов, количество успешных, потраченное время и т. Д., Также присутствует.

Поскольку я не могу загрузить изображение, я не могу показать вам вывод.

Вы можете пойти дальше и дать точную версию плагина для использования, такую ​​как

mvn org.apache.maven.plugins:maven-site-plugin:3.0:site org.apache.maven.plugins:maven-surefire-report-plugin:2.10:report
...