Предупреждение о запрете 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

Тестирование модулей лучше всего работает, когда тесты полны, то есть они что-то делают, а когда ошибка что-то не так. они, таким образом, не предназначены для "неполного отказа" или "проходят с предупреждением".

Это потому, что модульные тесты предназначены для тестирования. Таким образом, когда они терпят неудачу, что-то не так.

Не было бы лучше не использовать тесты для отслеживания того, что еще не реализовано, а скорее использовать тесты для проверки функциональности, которая там есть.

Таким образом, те тесты, которые в настоящее время проверяют функциональность, которая там не существует, вероятно, не будут выполняться до тех пор, пока эта функциональность не появится.