Задать вопрос
@Mikhri

Как запускать одиночные тесты в наследниках(JUnit 5)?

Есть две проги с похожим функционалом.
Одна - более продвинутая версия второй, если провести аналогию с калькулятором - первая умеет + - а вторая + - * /.

Надо протестить обе.
Есть класс JUnit-тестов: условно, ТестПервойПрограммы.
Все по той же аналогии с калькулятором он устроен как-то так:

public class ТестыПервойПрограммы {
	protected тестПосчитать(ожидаемыйРезультат, выражение) {
		assertEquals(ожидаемыйРезультат, new ПерваяПрограмма().посчитать(выражение));
	}

	@Test
	void дваПлюсДва() {
		тестПосчитать(4, "2+2");
	}
}


Только @Test - несколько десятков, понятно.
Чтобы не дублировать их код и не заморачиваться, если что-то придется поменять (а приходится часто, потому что это не прикладная программа, а чисто учебная, т.е. для обучения юнит-тестам я ее и пишу), я наследую тесты. Как-то так:

public class ТестыВторойПрограммы extends ТестыПервойПрограммы {
	
	@Override
	protected тестПосчитать(ожидаемыйРезультат, выражение) {
		assertEquals(ожидаемыйРезультат, new ВтораяПрограмма().посчитать(выражение));
	}

	@Test
	void дваУмножитьНаПять() {
		тестПосчитать(10, "2*5");
	}
}


Получается, вторая программа автоматом проходит тесты для первой + еще свои собственные.

Меня это целиком устраивает во всем, кроме того, что не вижу возможности без дублирования кода запускать тесты по одному, только все кучей, если сразу стартовать класс. Потому что переопределен только тестПосчитать, и просто нет кнопки в IntellijIdea, чтоб запустить одиночный тест.

Вопрос: возможно ли при такой структуре запускать тесты по одному?

Если да: как это правильно делается? Как хотя бы составить поисковый запрос, чтоб нагуглить то, что я ищу? :)

Если нет (да и вообще): что посоветуете почитать / посмотреть, чтобы решить проблему запуска одиночных тестов при наследовании тестовых классов?
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Сложный 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Keep
It
Stupid
Simple
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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