Подтвердить что ты не робот

Junit Параметрированные тесты вместе с Powermock - как?

Я пытался выяснить, как запускать параметризованные тесты в Junit4 вместе с PowerMock. Проблема в том, что для использования PowerMock вам необходимо украсить ваш тестовый класс

@RunWith(PowerMockRunner.class)

и использовать параметризованные тесты, которые вы должны украсить с помощью

@RunWith(Parameterized.class)

Из того, что я вижу, они кажутся взаимно исключенными!? Это правда? Есть ли способ обойти это? Я попытался создать параметризованный класс внутри класса, работающего с PowerMock; что-то вроде этого:

@RunWith(PowerMockRunner.class)
class MyTestClass {
     @RunWith(Parameterized.class)
     class ParamTestClass {
          // Yadayada
     }
}

Но, к сожалению, это не очень хорошо... ParamTestClass по-прежнему не работает с поддержкой PowerMock (не удивительно, возможно)... И у меня как бы заканчиваются идеи, поэтому любая помощь очень благодарен!

Update: Для будущих googlers также см.: Использование PowerMock без RunWith?

4b9b3361

Ответ 1

Да, это работает с использованием PowerMock Rule, если вы используете JUnit 4.7 +.

Ответ 2

У меня была такая же проблема. К сожалению, это не позволило мне использовать правило PowerMock из-за JVM, который у меня был. Вместо правила я использовал RunnerDelegate.

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)

Ответ 3

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

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