2015-08-12 10 views
13

Tôi đã phải đối mặt với một vấn đề đặc biệt. Về cơ bản, khi tôi chạy thử nghiệm Mockito/PowerMockito tôi thường tức là 'Run as Junit Test', nó mang lại cho tôi những lỗi sau:kiểm tra mockito không có lỗi phương pháp như vậy khi chạy như kiểm tra junit nhưng khi lọ được thêm bằng tay trong confugurations chạy, nó chạy tốt

java.lang.NoSuchMethodError: org.mockito.mock.MockCreationSettings.isUsingConstructor()Z 
at org.mockito.internal.creation.instance.InstantiatorProvider.getInstantiator(InstantiatorProvider.java:10) 
at org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:110) 
at org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:58) 
at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:203) 
at org.powermock.api.extension.listener.AnnotationEnabler.standardInject(AnnotationEnabler.java:106) 
at org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:54) 
at org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) 
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86) 
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) 
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33) 
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45) 
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122) 
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106) 
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

Tôi đã cố gắng thêm tất cả các lọ cần thiết trong sự phụ thuộc maven cũng như trong xây dựng đường dẫn nhưng vô ích.

Tuy nhiên, sau đó tôi đã thêm các bình thủ công trong các cấu hình chạy-> classpath-> mục người dùng. Sau đó, tôi chạy thử nghiệm như bình thường và nó sẽ hiển thị thanh trạng thái màu xanh lá cây tức là nó chạy hoàn hảo.

Hãy giúp tôi về điều này. Tôi cần phải chạy thử nghiệm mà không có những thay đổi gây phiền nhiễu đó sẽ ảnh hưởng đến công việc của tôi. Tôi có thể làm gì để tôi chạy thử nghiệm bình thường nghĩa là không đi tất cả các cách để chạy cấu hình nhưng chỉ đơn giản bằng cách thêm các lọ trong đường dẫn xây dựng và sau đó 'chạy thử nghiệm junit'?

+0

Tôi cho rằng bạn đang gặp sự cố khi chạy thử nghiệm trong IDE - bạn đang sử dụng IDE nào? –

+0

Thanks..its eclipse kepler –

Trả lời

22

Thử Cntrl + Shift + T trên màn hình nhật thực của bạn. Kiểm tra kết quả của bạn là gì. Lý tưởng nhất là nhật thực nên giải quyết lớp này chỉ từ một phụ thuộc. Nếu bạn đang nhận được nhiều kết quả, bạn có thể cần thêm loại trừ trên các phụ thuộc nhất định.

enter image description here

Ngoài ra kiểm tra xem bạn có thể thực hiện các trường hợp thử nghiệm của bạn từ dấu nhắc lệnh. Nếu bạn có thể làm được, thì đó không phải là vấn đề maven. Nhưng nếu một cái gì đó thất bại ở đây, hãy kiểm tra các phụ thuộc của bạn.

+0

Cảm ơn bệnh này kiểm tra .. –

+0

Nó làm việc .. Tôi loại bỏ các jar xung đột thêm từ một dự án khác và bây giờ tốt của nó ... Cảm ơn ... –

+1

Làm việc cho tôi quá. – Apokai

1

IDE của bạn cần được đồng bộ hóa với Maven, đó là những gì bạn đang thực hiện bằng tay bằng cách thêm các phụ thuộc.

Thật không may Eclipse không (hoặc không) cung cấp hành vi này out-of-the-box (không giống như IntelliJ đồng bộ hóa liền mạch).

Giải pháp được sử dụng để thực hiện với Maven Eclipse Plugin nhưng nhìn vào tài liệu có vẻ như cách mới nhất để thực hiện việc này là sử dụng plugin Eclipse Maven Integration cho IDE.

+0

Tôi sẽ thử điều này. Cảm ơn rất nhiều! –

7

Đối với tôi, phiên bản mockito đang tạo ra sự cố. Chỉ cần loại bỏ phụ thuộc mockito nếu bạn đã thêm một cách rõ ràng trong tệp pom của bạn. Tôi vừa xóa -

testCompile 'org.mockito:mockito-all:1.9.5' 

dòng từ tệp gradle của tôi. Cho phép giải quyết quyền lực giả và thêm sự phụ thuộc mockito nó cần vào nó riêng thay vì bạn buộc thêm một cái có thể dẫn đến xung đột.

Vì vậy, đối với tôi phụ thuộc là -

testCompile "org.powermock:powermock-module-junit4:1.6.4" 
testCompile "org.powermock:powermock-module-junit4-rule:1.6.4" 
testCompile "org.powermock:powermock-api-mockito:1.6.4" 
testCompile "org.powermock:powermock-classloading-xstream:1.6.4" 

khác hơn junit và phụ thuộc lib khác mà bạn có thể có.

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