Подтвердить что ты не робот

Обобщение отчета об опыте JUnit с помощью JavaDoc

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

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

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

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

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

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

4b9b3361

Ответ 1

Одним из способов достижения этого было бы использование пользовательского 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 {}
}

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

description.getAnnotation(TestDoc.class);

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

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

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

<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.

Ответ 2

Вы посмотрели отчеты 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

Ответ 3

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

Ответ 4

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

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

Ответ 5

Как уже упоминалось выше, 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

Ответ 6

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

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

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

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