2012-02-29 7 views
9

Chciałbym użyć funkcji Arquilliana i PowerMocka w tym samym teście JUnit 4.Używanie Arquilliana i PowerMocka w tym samym teście JUnit

Problemem jest to, że oba produkty są JUnit Runner S, który powinien być stosowany z @RunWith, a to nie jest możliwe, aby korzystać z wielu @RunWith w tej samej klasie testowej, lub umieścić Multiple Runner klasy S w tym samym @RunWith adnotacji.

Czy znasz jakiś sposób, aby to zrobić?

+0

Dzięki, mam edytowany moje pytanie, aby być bardziej precyzyjny. –

+0

Matthew, czy możesz spojrzeć na mój problem http://stackoverflow.com/questions/30799352/how-to-use-powermock-with-arquillian –

Odpowiedz

12

Możesz użyć PowerMock bez używania biegacza, jeśli używasz PowerMockRule (który jest TestRule). Z PowerMockRule:

Od wersji 1.4 możliwe jest bootstrap PowerMock użyciu JUnit regułę zamiast używania PowerMockRunner i adnotacji RunWith. Umożliwia to korzystanie z innych biegaczy JUnit, przy jednoczesnym korzystaniu z funkcji PowerMock . Można to zrobić poprzez określenie:

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

    // Tests goes here 
    ... 
} 

Zobacz także odpowiedź na Junit Parameterized tests together with Powermock - how? i wątku w grupie PowerMock google: Using PowerMock without the RunWith?.

+1

@Mattew Farwell: To nie działa dla mnie. Otrzymuję: 'java.lang.IllegalStateException: PowerMockRule może być użyty tylko z programem ładującym klasy, ale został załadowany przez ModuleClassLoader dla Modułu" deployment.test.war: main "z Service Module Loader'. Co mogę zrobić, aby razem używać Arquilliana i PowerMocka? – badera

2

Nie, to albo trzeba:

  • stosowanie jednego i utworzyć klasy bazowej testu, który robi rzeczy, które chcieliśmy innego biegacza do zrobienia.
  • oddzielić test na wiele testów, każdy za pomocą różnych biegaczy.
0

JUnit4 obsługuje tylko jedną @RunWith adnotacji, a JUnit4 @RunW przy adnotacji nie przyjmuje wielu biegaczy.

referencyjny:project13