2011-03-13 15 views
23

Tôi đang chạy một trường hợp thử nghiệm junit bằng cách sử dụng runner thử nghiệm PowerMock. Tôi đang sử dụng dòng lệnh sau đây để thực hiện nó:NoClassDefFoundError khi sử dụng Powermock

java -cp .:junit-4.9b2.jar:easymock-3.0.jar:powermock-easymock-1.4.8-full.jar org.junit.runner.JUnitCore SampleTest 

Khi làm như vậy Tôi nhận được lỗi này:

initializationError(SampleTest) 
java.lang.NoClassDefFoundError: org/junit/internal/runners/TestClassRunner 
... 

Làm thế nào tôi có thể sửa chữa nó?

Trả lời

0

Tôi đã giải quyết được sự cố. Tôi đã sử dụng phiên bản cũ junit-4.0.jar. Nhưng tôi vẫn không hiểu tại sao thiếu lớp TestClassRunner đặc biệt là trong gói powermock-easymock-junit-1.4.8.zip (có junit-4.8.2.jar)? Junit-4.8.2.jar cũng thiếu lớp TestClassRunner.

+0

Đây không phải là giải pháp đúng - chỉ đơn thuần là một cách giải quyết. Xem câu trả lời của tôi – RonK

63

Tôi chỉ giải quyết điều này một bây giờ, khi tôi đã thêm thuộc tính @RunWith(PowerMockRunner.class), eclipse tự động nhập khẩu:

import org.powermock.modules.junit4.legacy.PowerMockRunner; 

Tất cả tôi cần làm là thay đổi nó để là:

import org.powermock.modules.junit4.PowerMockRunner; 

Và bây giờ nó hoạt động tốt với JUnit 4.8.2.

Nhân tố thứ hai là khi chạy với phiên bản cũ hơn JUnit - cụ thể là 4.3 trở lên.

+0

Cảm ơn câu trả lời. – jatanp

+0

cảm ơn rất nhiều RonK !! – NiranjanBhat

+1

Cảm ơn bạn rất nhiều vì nó :) – shafeeq

5

Xem here

You're probably using the wrong PowerMockRunner. There's one runner made for JUnit 4.4 and above and a second runner made for JUnit 4.0-4.3 (although the latter also works for some older minor versions of JUnit 4.4).
Try switching from the org.powermock.modules.junit4.PowerMockRunner to org.powermock.modules.junit4.legacy.PowerMockRunner or vice versa. Look at the getting started guide to see how to configure this in maven.