Предупреждение о запрете Junit во время прохождения теста
Я работаю над проектом на тот момент, когда мы используем junit для тестирования, но поскольку его еще довольно ранние стадии, многие функции еще не реализованы, хотя у них уже есть тесты, написанные для них
это означает, что эти тесты (очевидно) всегда терпят неудачу
Мне было интересно, знает ли кто-нибудь, как заставить JUnit пройти тест, показывая предупреждение. желательно с настраиваемым сообщением, поэтому мы можем отметить, что эта функция еще не реализована.
Точка этого, которую мы хотим кодировать, компилировать, только если все тесты проходят, и на данный момент это просто невозможно.
Я понимаю, что мы можем просто прокомментировать или удалить пробные тесты, но затем мы рискуем забыть их добавить позже.
Ответы
Ответ 1
Вы можете @игнорировать перед методом тестирования. Тогда зависит от тестового бегуна, какой выход вы получаете. Вы можете получить что-то вроде успешного запуска 25 тестов и 6 тестов игнорируются...
Все зависит от того, как вы хотите запускать модульные тесты.
Ответ 2
Большинство бегунов JUnit, которые я видел, дадут вам один из четырех статусов для тестового примера: переданы, провалились, были ошибки или проигнорированы.
Как и ошибки (выброшенные исключение) сообщается аналогичным образом как неудачный ( "красный результат" ), нет хорошего способа генерировать предупреждение и по-прежнему иметь "зеленый результат" - я предполагаю, что это то, что вы ищете?
Как упоминалось Janusz, вы можете использовать атрибут @Ignore
для игнорирования тестового примера, который также может содержать сообщение:
@Ignore("disabled until implementation is finished")
public void testMe() {
//do something
}
Большинство участников не будут перечислять их явно в результатах, но вы можете автоматически искать любые проигнорированные тестовые примеры с помощью инструментов, ища атрибут @Ignore
и впоследствии генерировать отчет, в котором перечислены все тестовые примеры, которые был пропущен и причина (указана в атрибуте) почему.
Ответ 3
Будет ли org.junit.Assume делать то, что вам нужно?
Ответ 4
Я знаю, что мне около 2 лет, но я бы прокомментировал/проигнорировал те тесты, которые вам не нужны, и в качестве процесса убедитесь, что просмотры общего кода также охватывают модульные тесты вместе с представленным кодом. Что должно улучшить ваши методологии тестирования и охват в целом.
Ответ 5
Вы можете выбросить NotImplementedException в свои новые методы:
Apache Commons NotImplementedException
например.
public String getName() {
throw new NotImplementedException("Oh so soon...");
}
а затем укажите в своем тесте JUnit, что он должен ожидать, что это исключение будет выбрано:
@Test (expected=NotImplementedException.class)
public void testGetName() {
myKingdom.getName();
}
Это служит напоминанием всем о том, чтобы реализовать эту функциональность, конечно, когда они ее добавляют (или удаляют по ошибке), unit test заметит, что исключение больше не выбрасывается и бросает большой шаткий.
Ответ 6
Тестирование модулей лучше всего работает, когда тесты полны, то есть они что-то делают, а когда ошибка что-то не так. они, таким образом, не предназначены для "неполного отказа" или "проходят с предупреждением".
Это потому, что модульные тесты предназначены для тестирования. Таким образом, когда они терпят неудачу, что-то не так.
Не было бы лучше не использовать тесты для отслеживания того, что еще не реализовано, а скорее использовать тесты для проверки функциональности, которая там есть.
Таким образом, те тесты, которые в настоящее время проверяют функциональность, которая там не существует, вероятно, не будут выполняться до тех пор, пока эта функциональность не появится.