Класс тестирования детей Kotlin запускает все родительские тесты

Я использую Kotlin и JUnit. У меня есть родительский тестовый абстрактный класс, который содержит некоторые тестовые реализации, а также некоторые абстрактные тесты.

@Test abstract fun testThis() @Test fun testThat() { assert(true) } 

В моем классе child у меня есть реализация testThis() .

 @Test override fun testThis() { assert(1 == 1) } 

И в другом дочернем классе у меня есть другая реализация:

 @Test override fun testThis() { assert(2 == 3) } 

Однако, когда я запускаю все тесты из IntelliJ, я вижу, что testThat() дважды, один раз в каждом дочернем testThat() .

Как я могу прекратить это? Я хочу, чтобы тесты запускались только один раз, как часть их соответствующих классов (в этом случае testThat() должен выполняться один раз в родительском классе). Является ли мой дизайн проблематичным?

Я бы сохранил ваш родительский класс для общих тестовых утилит и настройки и переместил testThat на отдельный тестовый класс.

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

На мой взгляд, ваш дизайн действительно проблематичен. Даже если мы могли бы исключить вызов testThat () в родительском, если вы объявите другого ребенка, в любом случае у вас будет два прогона одного и того же теста. Я чувствую, что наследование здесь очень не важно. Почему вы действительно хотите продлить еще один тестовый класс? Я иногда наследую на тестовых классах, но без реальных реализаций тестов в родительском классе (абстрактное тестирование, хотя все в порядке).