JUnit @ Игнорировать полезность? - PullRequest
14 голосов
/ 15 июля 2011

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

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

Ответы [ 6 ]

20 голосов
/ 15 июля 2011

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

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

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

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

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

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

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

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

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

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

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

  • JUnit 4 TestRunners покажет @Ignore d тестов как «пропущенные», так что в итоге вы сможете увидеть, сколько тестов прошло / не прошло / пропустило.

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

4 голосов
/ 15 июля 2011

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

3 голосов
/ 16 июля 2011

FYI, TestNG поддерживает это немного по-другому:

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

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

enter image description here

1 голос
/ 15 июля 2011

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

0 голосов
/ 15 июля 2011

ИМХО, @ Игнорировать полезно было бы знать в отчетах, что есть x пропущенных тестов, которые вы не получите, если тест не аннотирован как тест или прокомментирован.Провал тестов не является хорошим вариантом, так как мы знаем, что тесты, которые мы хотим игнорировать, в какой-то момент не актуальны, но их нужно будет включить позже.Поэтому мы хотим посмотреть, будут ли все остальные тесты успешными или неудачными, зная, что мы пропустим ненужные тесты (факт, что мы их пропустили, будет виден в отчетах).

...