Использование Arquillian и PowerMock в одном тесте JUnit - PullRequest
9 голосов
/ 29 февраля 2012

Я хотел бы использовать функции Arquillian и PowerMock в одном и том же тесте JUnit 4.

Проблема состоит в том, что оба продукта являются JUnit Runner s, которые должны использоваться с @RunWith, иневозможно использовать несколько @RunWith в одном и том же тестовом классе или поместить несколько классов Runner в одну и ту же аннотацию @RunWith.

Знаете ли вы, как это сделать?

Ответы [ 3 ]

12 голосов
/ 29 февраля 2012

Вы можете использовать PowerMock без использования бегуна, если вы используете PowerMockRule (то есть TestRule ).Из PowerMockRule:

Начиная с версии 1.4, можно загружать PowerMock с использованием правила JUnit вместо использования PowerMockRunner и аннотации RunWith.Это позволяет вам использовать другие бегуны JUnit, в то же время получая выгоду от функциональности PowerMock.Это можно сделать, указав:

@RunWith(Arquillian.class);
public class MyTest {
    @Rule
    PowerMockRule rule = new PowerMockRule();

    // Tests goes here
    ...
}

См. Также ответы на Параметризованные тесты Junit вместе с Powermock - как? и следующей веткой в ​​группе Google PowerMock: Использование PowerMock без RunWith? .

2 голосов
/ 29 февраля 2012

Нет, вам либо нужно:

  • использовать один и создать базовый класс теста, который выполняет то, что вы хотели, чтобы другой бегун сделал.
  • разделяет ваш тест на несколькотесты, каждый с использованием разных бегунов.
0 голосов
/ 11 ноября 2013

JUnit4 поддерживает только одну аннотацию @RunWith, а аннотация @RunWith в JUnit4 не принимает несколько бегунов.

Ссылка: project13

...