Параметризованный тест JUNIT без изменения бегуна
-
12-10-2019 - |
Вопрос
Есть ли чистый способ запустить параметризованные тесты JUNIT 4 без изменения бегуна, т.е. без использования@RunWith(Parameterized.class)
?
У меня есть модульные тесты, которые уже требуют специального бегуна, и я не могу заменить этот Parameterized
. Анкет Может быть, есть какая -то «цепочка бегунов», так что я мог одновременно оба бегуна? (Просто дикое предположение ...)
Решение
org.junit.runners.Parameterized
создан org.junit.internal.builders.AnnotatedBuilder
отражающим механизм. Может вы могли бы продлить Parameterized
Как ваш собственный бегун: @runwith (MyParameterized.учебный класс).
Другие советы
Я выпустил структуру с парой бегунов, которые могут обеспечить соблюдение параметризации в тестовом классе, позволяя вам цепорить произвольного бегуна из третьей стороны для фактического выполнения тестирования.
Структура - CallbackParams - (http://callbackparams.org) - и это бегуны:
- CallbackParamSrunner
- Bddrunner
Используя фреймворк -аннотацию ...
- @WrappedRunner
... вы можете указать произвольного бегуна на третьей стороне таким образом:
@RunWith(CallbackParamsRunner.class) // or @RunWith(BddRunner.class)
@WrappedRunner(YourSpecialRunner.class)
public class YourTest {
...
Однако параметризованные тесты с CallbackParams значительно отличаются от традиционного подхода к параметризации тестирования. Причины объяснены в этом Учебная статья с объяснением Bddrunner Ближе к концу учебной статьи.
Для вашего первого теста CallbackParams вы, вероятно, предпочтете Bddrunner, поскольку для него требуется меньше котла, но когда вы начнете повторное использование значений параметров между различными тестовыми классами, вам, вероятно, лучше с CallbackParamSrunner, который требует более сильной проверки типов.
Также - с Bddrunner у вас не должно быть никаких тестовых методов. Вместо этого вы должны использовать фронтовые аннотации @given, @when и @then. Это требование иногда сталкивается с требованиями стороннего бегуна, но обычно это работает довольно хорошо.
Удачи!