Параметризованный тест JUNIT без изменения бегуна

StackOverflow https://stackoverflow.com/questions/4499503

Вопрос

Есть ли чистый способ запустить параметризованные тесты 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. Это требование иногда сталкивается с требованиями стороннего бегуна, но обычно это работает довольно хорошо.

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top