Подтвердить что ты не робот

JUnit @Ignore полезность?

В JUnit вы можете использовать @Ignore перед тем, как сообщить тест-бегуру, чтобы автоматически пропустить эти тесты. Из того, что я могу собрать, это действительно только удобный способ документировать/отследить неполные/не более функциональные тесты, которые вы хотите получить позже.

Правильно ли я говорю, что во время выполнения нет никакой разницы между тестом @Ignore, методом без аннотации и методом комментариев? (Предполагая, что эти тесты полностью автономны.) Есть ли способ получить список игнорируемых тестовых примеров в JUnit на Netbeans? Если нет, то сколько полезности имеет тег @Ignore, так как может быть более полезно пропустить тест, чтобы он не упускался?

4b9b3361

Ответ 1

Правильно ли я говорю, что во время выполнения нет никакой разницы между тестом @Ignore, методом без аннотации и методом комментариев?

Метод @Ignore d может быть найден через отражение. Метод без аннотации не может (или, если быть точнее, не может быть идентифицирован с уверенностью как проигнорированный метод тестирования), а метод с комментариями даже не попадает в байт-код.

Хотя я не думаю, что было бы много практического значения при поиске @Ignore d методов выполнения, может быть полезно создать статистику/отчеты.

сколько полезности имеет тег @Ignore

Одна вещь, о которой я могу думать, - это возможность поиска. Вы можете легко идентифицировать все аннотации @Ignore в исходном коде, в то время как неаннотированные или закомментированные тесты не так просто найти.

может быть более полезно пропустить тест, чтобы он не упускал из виду?

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

Ответ 2

  • Метод без аннотации, скорее всего, является методом полезности, вероятно, используемым другими методами в тесте.

  • Закомментированный метод полностью скрыт.

  • Но вы можете использовать @Ignore, чтобы указать, что вы временно отключите тест. Если у вас есть большой и сложный фрагмент кода, который находится в процессе перехода, вам может потребоваться временно отключить некоторые тесты, пока этот код не работает, особенно если механизм запуска этого кода запущен как часть некоторого большего набора регрессии. Атрибут @Ignore будет напоминанием вам (или вашей команде QA), что еще нужно сделать.

    Помните, что тесты @Ignore 'd по-прежнему являются живым кодом, и их можно увидеть и даже выполнить с помощью отражения, которые не могут быть прокомментированы. И это также означает, что когда вы реорганизуете другой код, они также обновляются, а синтаксический обрыв в API покажет там. Поэтому даже тесты с набором @Ignore могут активно способствовать качеству кода.

  • JUnit 4 TestRunners будет показывать теги @Ignore 'd как "пропущенные", поэтому вы можете в конце увидеть, сколько тестов прошло/провалилось/пропущено.

Хотя ваша копия Netbeans не может в полной мере воспользоваться преимуществами @Ignore, я могу заверить вас, что это не единственный потребитель тестов JUnit.

Ответ 3

@Инверенные тесты более поддерживаются (и поддерживаются), чем закомментированные. Они подвержены ошибкам компилятора по мере развития событий, структурированного поиска через IDE и рефакторинга с поддержкой IDE.

Ответ 4

FYI, TestNG поддерживает это несколько иначе:

  • Вы можете включить описание того, почему тест игнорируется:

    @Test(enabled = false, description = "Disabled until BUG-1234 gets fixed")
    
    • Плагин Eclipse TestNG и отчеты HTML будут дайте вам список всех тестов, которые были отключены, а также причина:

enter image description here

Ответ 5

Использование @Ignore вместо комментария @Test имеет то преимущество, что Хадсон/Дженкинс признает это как проигнорированный тест и соответственно отображает его в результатах теста. Поэтому вам напомнят об этом проигнорированном тесте, который является большой выгодой!

Ответ 6

IMHO, @Ignore полезности было бы знать в отчетах, что есть пропущенные x тесты, которые вы не получаете, если тест не аннотируется как тест или не комментируется. Неспособность тестирования не является хорошим вариантом, поскольку мы знаем, что тесты, которые мы хотим игнорировать, в какой-то момент не актуальны, но их нужно будет повторно открыть позже. Таким образом, мы хотим проверить, удастся ли все другие тесты/не удастся, зная, что мы пропустим нерелевантные (тот факт, что мы пропустили их, будет отображаться в отчетах).