Отчеты JUnit - описание метода тестирования
Я пытаюсь понять, есть ли способ включить "описательный текст" в мои отчеты junit с помощью javadocs. JUnit 4, похоже, не поддерживает атрибут 'description' для аннотации @Test, как это делает TestNG.
До тех пор, пока я не исследовал, есть только один инструмент, который называется javadoc-junit (http://javadoc-junit.sourceforge.net/). Однако я не мог заставить это работать, поскольку он кажется несовместимым с Junit 4.
Я хочу, чтобы какой-то способ предоставить предложение или два текста с каждым моим методом тестирования в отчете JUnit. JavaDoc не подходит, так как целевой аудитории придется подключиться к JavaDoc и отчету Junit, чтобы просмотреть документацию и/или тестовую статистику.
Кто-нибудь знает что-нибудь еще, что я мог бы использовать с минимальными усилиями?
Бест,
Ray J
Ответы
Ответ 1
Также существует довольно недавнее решение под названием Allure. Это отчет о выполнении теста на основе Java, основанный главным образом на добавлении дополнительных комментариев к коду. Существующие аннотации включают:
- пользовательское описание: @Description ( "Классный тест" )
- группировка по функциям или историям: @Features ({ "feature1", "feature2" }), @Stories ({ "story1", "story2" })
- методы маркировки, выполняемые внутри тестового примера, в виде шагов: @Step (работает даже для частных методов)
- вложения: @Attachment (name = "Скриншот страницы", type = "image/png" )
Смотрите пример wiki и для более подробной информации.
Ответ 2
В JUnit 5
есть способ аннотировать каждый тест с помощью @DisplayName
. Объявленные классы тестов могут иметь text
, special characters
и emojis
.
Объявленный текст в каждом тесте отображается test runners
и test reports
.
Javadoc говорит:
public @interface DisplayName
@DisplayName используется для объявления пользовательского отображаемого имени для аннотированного тестового класса или метода тестирования. Отображаемые имена обычно используются для тестовых отчетов в среде IDE и для создания инструментов и могут содержать пробелы, специальные символы и даже emoji.
И Руководство пользователя:
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() {
}
}
Ответ 3
Я не ставил javadocs в тестах JUnit. Я обычно делаю имя метода достаточно подробным, чтобы оно было так же хорошо, как и любой комментарий, который я мог придумать.
Ответ 4
Я мог предположить, что Framework for Integrated Tests (FIT) будет хорошим и чистым решением.
Что делает FIT?
FIT - это структура, которая позволяет писать тесты через таблицу в документе Word, таблице wiki или таблице html.
Каждый символ вне таблицы игнорируется FIT и позволяет вводить документацию, описание, требования и т.д.
Как выглядят эти таблицы?
Представьте себе функцию MyMath.square(int)
, которая квадратизирует ее входной параметр. Вы должны создать так называемый Fixture, являющийся адаптером между вашим MyMath
и следующей таблицей:
class.with.Fixture.Square
x square()
2 4
5 25
Первый столбец описывает входные значения, второй - ожидаемый результат. Если он не равен, это поле будет отмечено как красное.
Как выглядит приложение Fixture?
Для данного примера это будет правильным приспособлением:
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 для своих требований.
Не стесняйтесь комментировать мой ответ или редактировать свой вопрос для получения дополнительной информации!