Категория JUnit не работает с TestCase?

Я обнаружил странную вещь, и мне интересно узнать, почему это происходит. Я использую плагин maven surefire (2.12.4) с Junit 4.11. Когда я хотел использовать аннотацию @Category, чтобы отключить некоторые тесты. странно то, что он корректно работает только с тестами, которые не расширяют TestCase. Для теста, который не расширяет TestCase, я смог поместить аннотацию только в тестовый метод для запуска/отключения, но с другими он отключает все тесты в классе. Пример: Командная строка: mvn test -Dgroups=!testgroups.DisabledTests запустить только тест B для первого фрагмента:

import static org.junit.Assert.*;
public class DataTest {
    @Test
    public void testA(){...} 

    @Test @Category(testgroups.DisabledTests.class)
    public void testB(){...}
}

во втором случае с расширением класса TestCase тесты выполняться не будут.

public class DataTest extends TestCase {
    @Test
    public void testA(){...} 

    @Test @Category(testgroups.DisabledTests.class)
    public void testB(){...}
}

Почему это происходит?


person Igor Grinfeld    schedule 06.01.2016    source источник
comment
Проблема в том, что второй класс является расширением TestCase. Поскольку это стиль JUnit 3, аннотация @Category не работает. Аннотирование класса с помощью @RunWith(JUnit4.class) должно дать вам одинаковый результат в обоих случаях.   -  person deborah-digges    schedule 06.01.2016
comment
Спасибо. Я уже написал в вопросе, что проблема в «TestCase», но я не знал, почему. Вы имеете в виду, что TestCase устарел для JUnit 4?   -  person Igor Grinfeld    schedule 06.01.2016
comment
JUnit 4 находит тест, ища аннотацию @Test. Вы можете удалить extends TestCase из своего тестового класса. Кроме того, имя метода тестирования больше не должно начинаться с test. Вы можете выбрать любое имя метода.   -  person Stefan Birkner    schedule 06.01.2016


Ответы (1)


Решение было дано в комментарии deborah-digges:

Проблема в том, что второй класс является расширением TestCase. Поскольку это стиль JUnit 3, аннотация @Category не работает. Аннотирование класса с помощью @RunWith(JUnit4.class) должно дать вам одинаковый результат в обоих случаях.

и еще один от Стефана Биркнера:

JUnit 4 находит тест, ища аннотацию @Test. Вы можете удалить extends TestCase из своего тестового класса. Кроме того, имя метода тестирования больше не должно начинаться с test. Вы можете выбрать любое имя метода.

person Igor Grinfeld    schedule 04.04.2016