jUnit игнорируют @Test методы от базового класса

Скажем, мне назвали тестовый класс testFixtureA с несколькими методами testA, testB, testC, и т.д., каждый с @Test аннотация.

Давайте теперь скажем, что я разделяю на подклассы testFixtureA в названный класс testFixtureAB и я ничего не перезаписываю. testFixtureAB пусто что касается теперь.

Когда я запускаю тесты от testFixtureAB, методы testA, testB и testC выполняются исполнителем тестов, потому что исполнитель тестов не различает методы тестирования от класса и базового класса.

Как я могу вынудить исполнитель тестов не учесть тесты от базового класса?

17
задан Benjamin 1 February 2014 в 13:11
поделиться

5 ответов

Измените структуру тестовых классов.

  • Если вы не хотите использовать тесты базового класса, не расширяйте его
  • Если вам нужны другие функции базового класса, разделите этот класс на два - тесты и другие функции
20
ответ дан 30 November 2019 в 10:12
поделиться

Я знаю, что это не ответ....

Рассмотрим причину, по которой вы расширяете конкретные тестовые классы. Таким образом вы дублируете методы тестирования.

Если вы разделяете код между тестами, то рассмотрите возможность написания базовых тестовых классов с помощью помощника и метода настройки или класса помощника теста .

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

1
ответ дан 30 November 2019 в 10:12
поделиться

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

1
ответ дан 30 November 2019 в 10:12
поделиться

и я ничего не перезаписываю. testFixtureAB пока пуст

Вот ваш ответ. Если вы не хотите запускать testB из основного класса, переопределите его:

public class testFixtureAB extends testFixtureA {
   @Override
   public void testB() {}
}
23
ответ дан 30 November 2019 в 10:12
поделиться

игнорирование всего базового класса:

@Ignore
class BaseClass {
   // ...
}

посмотрите этот пример

11
ответ дан 30 November 2019 в 10:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: