Бросок Junit, предупреждающий, все еще проходя тест

Только для forgetting-dispose проблемы, попробуйте решение, описанное в этом сообщении в блоге . Вот сущность:

    public void Dispose ()
    {
        // Dispose logic here ...

        // It's a bad error if someone forgets to call Dispose,
        // so in Debug builds, we put a finalizer in to detect
        // the error. If Dispose is called, we suppress the
        // finalizer.
#if DEBUG
        GC.SuppressFinalize(this);
#endif
    }

#if DEBUG
    ~TimedLock()
    {
        // If this finalizer runs, someone somewhere failed to
        // call Dispose, which means we've failed to leave
        // a monitor!
        System.Diagnostics.Debug.Fail("Undisposed lock");
    }
#endif

13
задан Josh Bones 5 August 2009 в 00:22
поделиться

5 ответов

Вы можете @Ignore перед методом тестирования. В этом случае от исполнителя тестов зависит, какой результат вы получите. Вы можете получить что-то вроде успешного выполнения 25 тестов, а 6 тестов игнорируются ...

Все дальнейшее зависит от того, как вы хотите запускать модульные тесты.

5
ответ дан 1 December 2019 в 21:53
поделиться

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

Как и были ошибки (возникло исключение), сообщается аналогичным образом как сбой («красный результат»), нет хорошего способа сгенерировать предупреждение и по-прежнему иметь «зеленый результат» - я полагаю, это именно то, что вы ищете?

Как упомянул Януш , вы можете использовать атрибут @Ignore , чтобы игнорировать тестовый пример, который также может содержать сообщение:

@Ignore("disabled until implementation is finished")
public void testMe() {
   //do something
}

Большинство бегунов не будут перечислять их явно в результатах, но вы можете искать любые игнорируемые тестовые примеры автоматически с использованием инструментов, путем поиска атрибута @Ignore и последующего создания отчета,в котором перечислены все пропущенные тестовые примеры и причина (указанная в атрибуте).

9
ответ дан 1 December 2019 в 21:53
поделиться

Будет ли org.junit.Assume делать то, что вам нужно?

9
ответ дан 1 December 2019 в 21:53
поделиться

Вы можете создать исключение NotImplementedException в ваших новых методах:

Apache Commons NotImplementedException

, например,

public String getName() {
    throw new NotImplementedException("Oh so soon...");
}

, а затем указать в своем тесте JUnit, что это исключение следует ожидать:

@Test (expected=NotImplementedException.class) 
public void testGetName()  {
    myKingdom.getName();
}

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

0
ответ дан 1 December 2019 в 21:53
поделиться

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

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

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

Итак, те тесты, которые в настоящее время тестируются функциональность, которой нет, вероятно, не должна выполняться до тех пор, пока она не появится.

0
ответ дан 1 December 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: