Скажем, мне назвали тестовый класс testFixtureA
с несколькими методами testA
, testB
, testC
, и т.д., каждый с @Test
аннотация.
Давайте теперь скажем, что я разделяю на подклассы testFixtureA
в названный класс testFixtureAB
и я ничего не перезаписываю. testFixtureAB
пусто что касается теперь.
Когда я запускаю тесты от testFixtureAB
, методы testA
, testB
и testC
выполняются исполнителем тестов, потому что исполнитель тестов не различает методы тестирования от класса и базового класса.
Как я могу вынудить исполнитель тестов не учесть тесты от базового класса?
Измените структуру тестовых классов.
Я знаю, что это не ответ....
Рассмотрим причину, по которой вы расширяете конкретные тестовые классы. Таким образом вы дублируете методы тестирования.
Если вы разделяете код между тестами, то рассмотрите возможность написания базовых тестовых классов с помощью помощника и метода настройки или класса помощника теста .
Если для выполнения тестов, то попробуйте организовать тесты с наборами и категориями .
В последней версии JUnit вы можете использовать аннотацию @Rule в подклассе, чтобы проверить имя теста и перехватить выполнение теста, чтобы игнорировать тест динамически. Но я бы предположил, что идея @ Bozho лучше - тот факт, что вам нужно это сделать, указывает на более серьезную проблему, которая, вероятно, показывает, что наследование здесь не является правильным решением.
и я ничего не перезаписываю. testFixtureAB пока пуст
Вот ваш ответ. Если вы не хотите запускать testB из основного класса, переопределите его:
public class testFixtureAB extends testFixtureA {
@Override
public void testB() {}
}