2015-03-20 25 views
5

Tôi đang viết các kiểm tra junit trên dự án Android bằng cách sử dụng bộ phận hỗ trợ kiểm tra đơn vị mới http://tools.android.com/tech-docs/unit-testing-support.Hỗ trợ kiểm tra đơn vị Android không hoạt động trong mô-đun thư viện Android

Trong khi kiểm tra đơn vị chạy trên mô-đun 'com.android.application' một cách hoàn hảo nhưng chúng luôn thất bại trên mô-đun 'com.android.library'. Điều này đã không được ghi nhận trong http://tools.android.com/tech-docs/unit-testing-support. Vì vậy, tôi tự hỏi liệu tôi có phải là thủ phạm hay không.

Khi tôi viết những bài kiểm tra trên các module thư viện, các bài kiểm tra không thể tìm thấy các lớp học trên mô-đun và luôn mang đến cho các lỗi sau đây:

package does not exist 

error: cannot find symbol 

Sự hỗ trợ đơn vị thử nghiệm android đang trong giai đoạn thử nghiệm ngay bây giờ, nhưng là có một giải pháp cho nó.

CẬP NHẬT

Tôi đã thêm vấn đề này đến vấn đề android tracker https://code.google.com/p/android/issues/detail?id=161038

+0

Bạn đang sử dụng công việc gradle nào? Bạn có thể thêm đầu ra nhật ký xây dựng gradle không? Tôi đã thử nghiệm làm việc trong một mô-đun thư viện với cùng một thiết lập như cho mô-đun ứng dụng. –

+0

Cảm ơn sự giúp đỡ của Kriill Boyashinov. Tôi không thay đổi nhiệm vụ trong mô-đun thư viện Android. –

Trả lời

7

Dường như các nhiệm vụ để biên dịch các bài kiểm tra đơn vị không phụ thuộc vào các nhiệm vụ để biên dịch mã thư viện. Các cố định sau đó cho tôi:

afterEvaluate { 
    tasks['assembleDebugUnitTest'].dependsOn(tasks['assembleDebug']) 
} 

tôi chạy thử nghiệm sử dụng

./gradlew testDebug 

Nếu bạn không muốn thay đổi build.gradle của bạn, tự xác định nhiệm vụ assembleDebug trên dòng lệnh cũng nên làm thủ thuật:

./gradlew assembleDebug testDebug 
+0

Đây hoàn toàn là vấn đề.Một sửa chữa đơn giản như vậy, quá! –

+0

Điều này sửa lỗi tham chiếu đến các lớp thư viện, nhưng không giúp tham chiếu đến "R". – FishStix

2

Trong dự án thư viện Android của tôi, tôi cũng không nhận được các bài kiểm tra chạy. Những gì tôi đã làm là tạo ra một ứng dụng thử nghiệm sử dụng thư viện và đã viết các kiểm thử trong ứng dụng gọi các phương thức thư viện.

Đây có thể không phải là giải pháp lý tưởng, nhưng là cách chúng tôi làm việc này.

1

Có một cái nhìn qua đây https://github.com/nenick/AndroidStudioAndRobolectric

Ở đó bạn có thể chạy thử nghiệm đơn vị trên các thư viện và hương vị. Và không bạn không cần sử dụng Robolectric như Gaurav Vashisth đã nêu. Bạn có thể nếu bạn muốn.

Here is an example of JUnit test in a library module

+0

Robolectric cũ. –

+0

Nếu bạn đã xem ví dụ sau đó bạn sẽ thấy rằng bạn không cần Robolectric và bạn cũng có thể chạy các bài kiểm tra JUnit. https://github.com/nenick/AndroidStudioAndRobolectric/blob/library/core/src/test/java/com/example/core/SimpleUnitCoreTest.java – Niklas

+0

Không có mô-đun thư viện Android nào trong kho lưu trữ đó. –

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