Описание методов тестирования отчетов JUnit

Я пытаюсь выяснить, есть ли способ включить «описательный текст» в мои отчеты junit с помощью javadocs. JUnit 4, похоже, не поддерживает атрибут «описание» для аннотации @Test, как это делает TestNG.

Пока что из того, что я исследовал, существует только один инструмент, называемый javadoc-junit (http://javadoc-junit.sourceforge.net/). Однако я не смог заставить это работать, так как оно кажется несовместимым с Junit 4.

Я хочу каким-то образом предоставить одно или два предложения текста с каждым моим методом тестирования в отчете JUnit. JavaDoc бесполезен, поскольку целевой аудитории придется переключаться между JavaDoc и отчетом Junit, чтобы просмотреть документацию и/или статистику тестирования.

Кто-нибудь знает что-нибудь еще, что я мог бы использовать с минимальными усилиями?

Лучший, Рэй Джей


person Community    schedule 21.04.2009    source источник
comment
Хороший вопрос. Я также был бы заинтересован в решении для этого.   -  person martin    schedule 12.11.2012
comment
5 лет спустя та же проблема. :)   -  person mario    schedule 12.06.2014
comment
Junit 5 будет поддерживать пользовательские имена тестов: junit.org/junit5/docs /current/user-guide/#пользовательские имена   -  person gontard    schedule 20.04.2016


Ответы (4)


В JUnit 5 есть способ аннотировать каждый тест с помощью @DisplayName. Заявленные тестовые классы могут иметь text, special characters и emojis.

Объявленный текст в каждом тесте виден test runners и test reports.


В Javadoc говорится:

public @interface DisplayName

@DisplayName используется для объявления пользовательского отображаемого имени для аннотированного тестового класса или тестового метода. Отображаемые имена обычно используются для отчетов о тестировании в IDE и инструментах сборки и могут содержать пробелы, специальные символы и даже эмодзи.

И Руководство пользователя:

import org.junit.gen5.api.DisplayName;
import org.junit.gen5.api.Test;

@DisplayName("A special test case")
class DisplayNameDemo {

    @Test
    @DisplayName("Custom test name containing spaces")
    void testWithDisplayNameContainingSpaces() {
    }

    @Test
    @DisplayName("╯°□°)╯")
    void testWithDisplayNameContainingSpecialCharacters() {
    }

    @Test
    @DisplayName("????")
    void testWithDisplayNameContainingEmoji() {
    }
}
person Patrick    schedule 21.04.2016
comment
Спасибо, но JUnit 5 слишком нов для использования в производстве. - person Akceptor; 23.04.2016
comment
@Akceptor Это правда. Но я подумал, что вопросу 7 лет - может быть, через 7 лет это будет правильный ответ :D - person Patrick; 24.04.2016
comment
Награжден. Просто потому, что кажется, что JUnit 5 — единственное доступное решение. - person Akceptor; 26.04.2016

Есть также относительно недавнее решение под названием Allure. Это отчет о выполнении теста на основе Java, в основном основанный на добавлении дополнительных аннотаций к коду. Существующие аннотации включают:

  • пользовательское описание: @Description("Классный тест")
  • группировка по характеристикам или историям: @Features({"feature1", "feature2"}), @Stories({"story1", "story2" })
  • пометить методы, выполняемые внутри тестового примера, как шаги: @Step (работает даже для приватных методов)
  • вложения: @Attachment(name = "Снимок экрана", type = "image/png")

См. их вики и пример проекта для более подробной информации.

person vania-pooh    schedule 09.06.2014

Я не помещаю javadocs в тесты JUnit. Обычно я делаю название метода достаточно описательным, чтобы оно было таким же хорошим или лучше, чем любой комментарий, который я мог бы придумать.

person duffymo    schedule 21.04.2009

Я мог себе представить, что Framework for Integrated Tests (FIT) будет хорошим и понятным решением.

Что делает FIT?
FIT — это платформа, которая позволяет писать тесты с помощью таблицы в документе Word, вики-таблицы или таблицы html.
Каждый символ вне таблица игнорируется FIT и позволяет вам вводить документацию, описание, требования и т.д.

Как выглядит одна из этих таблиц?

Представьте себе функцию MyMath.square(int), которая возводит в квадрат свой входной параметр. Вы должны построить так называемый Fixture, являющийся адаптером между вашим MyMath и следующей таблицей:

class.with.Fixture.Square
x    square()
2    4
5    25

Первый столбец описывает входные значения, второй — ожидаемый результат. Если оно не равно, это поле помечается красным.

Как выглядит фикстура?
В данном примере это будет правильная фикстура:

package class.with.Fixture // Must be the same as in the fist row of the table

public class Square extends Fixture {
    public int x; // Must be the same as in the second row
    public int square() { // Must be the same as in the second row
        return MyMath.square(x);
    }
}

Вероятно, вы можете использовать FIT для своих требований.
Не стесняйтесь комментировать мой ответ или редактировать свой вопрос для получения дополнительной информации!

person guerda    schedule 24.04.2009
comment
Не понял, как это отвечает на ваш вопрос о добавлении описательного сообщения для вашего testMethod. Предоставляет ли FIT эту функцию? - person hakish; 14.10.2010
comment
Не напрямую, но вы можете сделать хорошую документацию в своем документе Word, что делает и должен делать тестовый метод. - person guerda; 14.10.2010