Ответ 1
Да, это работает с использованием PowerMock Rule, если вы используете JUnit 4.7 +.
Я пытался выяснить, как запускать параметризованные тесты в 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?
Да, это работает с использованием PowerMock Rule, если вы используете JUnit 4.7 +.
У меня была такая же проблема. К сожалению, это не позволило мне использовать правило PowerMock из-за JVM, который у меня был. Вместо правила я использовал RunnerDelegate.
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
Вы не можете использовать сразу два класса, поэтому вам обязательно нужно написать собственный тестовый бегун, чтобы это произошло.
Я ничего не знаю о Powermock, но после 10 секунд исследований, похоже, что одним из решений было бы написать тестовый бегун, который использует загрузчик класса powermock и запускает параметризованные тесты. Если вы можете понять, как делегировать параметризованный тестовый бегун из вашего пользовательского тестового бегуна, это может быть вашим лучшим выбором.