2014-12-06 13 views
8

tôi thêm hai mô-đun trong dự án AndroidStudio tôi:Làm thế nào để sử dụng mã trong androidTest thư mục của một mô-đun

app-base 
| 
|----src 
     |____androidTest 
       |________MyTestBase.java   

app 
| 
|----src 
     |____androidTest 
       |________MyTest.java 

Một số lớp thử nghiệm thông thường được quy định tại androidTest app-base, và được sử dụng trong app'androidTest.

Tôi đã cố gắng thêm đoạn mã sau vào build.gradle ứng dụng của:

evaluationDependsOn(':app-base') 

    compile project(':app-base') 

    androidTestCompile project(':app-base') 

Tôi có bao gồm cả ứng dụng cơ bản và ứng dụng trong settings.gradle, đầu ra của dự án gradlew là:

Root project 'MyProject' 
+--- Project ':app-base' 
+--- Project ':app' 

Không có lỗi biên dịch theo cách này, nhưng khi tôi chạy MyTest trong ide, nó cho biết lớp MyTestBase không được tìm thấy.

Bạn có biết điều gì không ổn? Bất kỳ ý tưởng được đánh giá cao. Cảm ơn.

+0

Bạn đã xác định một * settings.gradle * tập tin thích hợp? Đầu ra của 'dự án gradlew' là gì? Hãy xem [tài liệu Gradle] (http://www.gradle.org/docs/current/userguide/multi_project_builds.html) để biết thêm thông tin về cách thiết lập các bản dựng nhiều dự án. –

+0

Có sự phụ thuộc vào mã thử nghiệm của một dự án khác chắc chắn không điển hình. Bạn sẽ phải phụ thuộc rõ ràng vào các dự án testCompile configuraiton. Thử 'androidTestCompile project (đường dẫn: ': app-base', cấu hình: 'androidTestCompile')'. –

Trả lời

3

Tôi đề nghị bạn thực hiện chiến lược sau: tạo mô-đun mới test-utils và đặt MyTestBase.java vào nguồn chính của mô-đun này.

test-utils 
| 
|----src 
     |____main 
      |________MyTestBase.java 

Sau đó, bạn thêm này test-utils như một sự phụ thuộc kiểm tra ở tất cả các module, nơi nó là cần thiết

androidTestCompile project(':test-utils') 
+0

Vâng, tôi đã từng nghĩ về giải pháp. Tôi nghĩ rằng công trình. Nhưng sau đó tôi cần thêm một mô-đun mới chỉ cho một vài lớp. Điều đó không thể chấp nhận được. Nhưng nhờ bất kỳ cách nào :) – maoruilin

+0

IMHO một mô-đun mới không phải là một điều lớn. Các giải pháp thay thế là: mã trùng lặp trong mỗi mô-đun hoặc xác định nhiều thư mục nguồn cho androidTest với một số đường dẫn tương đối như: '../ app-base/src/androidTest/java /' (IMHO cả hai đều tồi tệ hơn) – ben75

+0

Tôi đã thử phương pháp này nhưng không thể làm cho nó hoạt động được. trong tập tin gradle module 'instrumentantiontest' tôi đã sử dụng câu lệnh 'biên dịch' vì các nguồn nằm trong' main '. Tất cả mọi thứ biên dịch, nhưng khi chạy tất cả các bài kiểm tra thiết bị đo đạc, nó không thể tìm thấy bất kỳ thử nghiệm nào. Khi cụ thể hủy hoại một phương pháp thử nghiệm, các lỗi kiểm tra với ngoại lệ ClassNotFound –

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