Junit Параметризованные тесты вместе с Powermock - как? - PullRequest
40 голосов
/ 16 марта 2010

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

@RunWith(PowerMockRunner.class)

и для использования параметризованных тестов вы должны украсить

@RunWith(Parameterized.class)

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

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

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

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

Ответы [ 3 ]

27 голосов
/ 11 мая 2015

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

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
15 голосов
/ 06 апреля 2010

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

0 голосов
/ 16 марта 2010

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

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

...