2012-02-29 27 views
9

Tôi muốn sử dụng các tính năng của cả Arquillian và PowerMock trong cùng một bài kiểm tra JUnit 4.Sử dụng cả Arquillian và PowerMock trong cùng một bài kiểm tra JUnit

Vấn đề là cả hai sản phẩm được JUnit Runner s mà nên được sử dụng với @RunWith, và điều này là không thể sử dụng nhiều @RunWith trên lớp thử nghiệm tương tự, hoặc để đặt lớp nhiều Runner s trong cùng @RunWith chú thích.

Bạn có biết cách nào để làm điều đó không?

+0

Cảm ơn, tôi đã chỉnh sửa câu hỏi của tôi để được chính xác hơn. –

+0

Matthew, bạn có thể xem xét vấn đề của tôi http://stackoverflow.com/questions/30799352/how-to-use-powermock-with-arquillian –

Trả lời

12

Bạn có thể sử dụng PowerMock mà không sử dụng nhân vật nếu bạn sử dụng PowerMockRule (là TestRule). Từ PowerMockRule:

Kể từ phiên bản 1.4, có thể khởi động PowerMock bằng cách sử dụng JUnit Quy tắc thay vì sử dụng PowerMockRunner và chú thích RunWith. Điều này cho phép bạn sử dụng các trình chạy JUnit khác trong khi vẫn hưởng lợi từ chức năng của 01MPowerMock. Bạn làm điều này bằng cách xác định:

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

    // Tests goes here 
    ... 
} 

cũng xem câu trả lời cho Junit Parameterized tests together with Powermock - how? và sợi sau trong nhóm PowerMock google: Using PowerMock without the RunWith?.

+1

@Mattew Farwell: Điều này không hiệu quả đối với tôi. Tôi nhận được: 'java.lang.IllegalStateException: PowerMockRule chỉ có thể được sử dụng với bộ nạp lớp hệ thống nhưng đã được nạp bởi ModuleClassLoader cho Module" deployment.test.war: main "từ Service Module Loader'. Tôi có thể làm gì để sử dụng Arquillian và PowerMock cùng nhau? – badera

2

Không, bạn có cần phải:

  • sử dụng một và tạo ra một lớp cơ sở thử nghiệm mà không được điều bạn muốn Á hậu khác để làm.
  • tách riêng bài kiểm tra của bạn thành nhiều bài kiểm tra, mỗi bài kiểm tra sử dụng các trình chạy khác nhau.
0

JUnit4 chỉ hỗ trợ một @RunWith chú thích và chú thích @RunWith của JUnit4 không chấp nhận nhiều người chạy.

tham khảo:project13

Các vấn đề liên quan