Иногда хочется взять и пропустить тот или иной юнит-тест, который всё время проваливается. Можно, конечно, его закоментировать, но это не так удобно. Во-первых, закомментированный тест перестанет компилироваться и, если когда Ваш код сильно изменится, вернуть тест к жизни будет сложнее. Во-вторых, про этот тест скорей всего забудут и он уже никогда не раскомментируется.
JUnit предлагает более изящный подход к пропуску тестов — игнорирование тестов с помощью специальной аннотации.
@Ignore
Возьмём пример основной функциональности JUnit и запретим исполнение одного из тестов:
1
2
3
4
5
6
7
8
|
@Ignore("Disabled for educational reason.")
@Test
public void testToArray() {
String[] expected = {"T", "E", "S", "T"};
String source="T:E:S:T";
assertArrayEquals("Wrong array", expected, StringUtils.toArray(source, ':'));
assertEquals(0,StringUtils.toArray(null, ':').length);
}
|
Немедленно протестируем:
1
2
3
4
5
6
7
8
9
|
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running ru.morningjava.junit.StringUtilsTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.576 sec
Results :
Tests run: 6, Failures: 0, Errors: 0, Skipped: 1
|
Суммарное число тесто не изменилось, но один тест было пропущен: «Skipped: 1». В аннотацию @Ignore можно написать опциональный комментарий. К сожалению, maven не выводит эти комментарии, но, например, при исполнении в какой-либо среде разработки можно увидеть такое:
Don’t ignore
@Ignore позволяет пропустить провалившийся тест и сделать вид что всё хорошо. Не делайте так. Если тест провалился, это означает что поведение вашего кода изменилось. А это значит, что всё, что с этим кодом работает, оказалось в опасности.
Если тест провалился, лучше пойдите и исправьте код, который его проваливает. Если изменение поведения и было целью изменения кода — исправляйте тест. Но не игнорируйте его и уж тем более не комментируйте.