2016-02-05 11 views
5

Tôi đang cố gắng sử dụng PowerMock với Android InstrumentTestCase Vì thử nghiệm của tôi chạy trên thiết bị Android nên cần thêm thư viện vào gói ứng dụng.Lỗi thời gian chạy PowerMock + Mockito: ProxyFrameworkImpl không thể được đặt trong classpath

Tôi gặp sự cố lớn với powermock + mockito và tệp Dex. Tôi có một lỗi runtime chỉ với powermock + Mockito trong sự phụ thuộc của tôi:

org.powermock.api.extension.proxyframework.ProxyFrameworkImpl could not be located in classpath. 

Và một lỗi biên dịch nếu tôi bao gồm một trong hai cglib/cglib-nodep (đã đề xuất trong answers):

com.android.dex.DexException: Multiple dex files define Lnet/sf/cglib/beans/BeanCopier$BeanCopierKey 

đây là một phần của gradle.build của tôi:

androidTestCompile 'com.android.support.test:runner:0.3' 
androidTestCompile 'org.powermock:powermock-api-mockito:1.6.4' 
androidTestCompile 'org.powermock:powermock-module-junit4:1.6.4' 
androidTestCompile 'cglib:cglib-nodep:3.2.0' 
androidTestCompile 'cglib:cglib:3.2.0' 

Tôi đang thiếu gì?

Cảm ơn trước!

+0

Tôi gặp sự cố tương tự. Bạn đã quản lý để tìm một giải pháp? – Daniel

+0

Chưa, tôi đã trì hoãn sự cố. Tôi đã cố gắng tải xuống các thư viện và nếu bạn xem nội dung, bạn có thể thấy rằng chúng có cả hai cái bình giống nhau. Nó phải được loại bỏ khỏi một thư viện. – nsvir

Trả lời

5

Tôi cũng đã cố gắng sử dụng thử nghiệm thiết bị đo công cụ PowerMock cho Android và gặp vấn đề tương tự.

Dưới đây là những gì tôi đã tìm thấy trên PowerMock github

PowerMock sẽ không hoạt động trên Android nếu bạn chạy nó trên một thiết bị từ PowerMock đang sử dụng JVM mã byte thao tác. Nó sẽ hoạt động nếu bạn chạy nó trên một JVM.

Vì vậy, tôi đoán PowerMock chỉ thích hợp để thử nghiệm đơn vị trên Android.

+0

Cảm ơn bạn đã trả lời! Tôi đã từ bỏ vì thiếu thông tin. – nsvir

+0

Chắc chắn! Trên thực tế, cần có một số cách tiếp cận khác nhau để chèn công cụ giả vào các thử nghiệm thiết bị đo đạc. Ví dụ, người ta có thể được thiết kế lại để kiểm tra đơn vị Robolectric và sau đó chúng ta có thể sử dụng PowerMock hoặc Mockito. Như tôi nhớ, tôi đã giải quyết vấn đề của mình theo cách này. –

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