2016-05-05 16 views
5

Tôi đã sửa đổi dự án của mình để trở thành đa nền tảng.Gradle: Làm thế nào để chạy thử nghiệm từ một phụ thuộc mô-đun?

Trạng thái trước: Chỉ một mô-đun (dự án) với một build.gradle. Tất cả các bài kiểm tra đều nằm trong thư mục kiểm tra và khi tôi chạy gradlew testDebug tất cả 500 bài kiểm tra của tôi đang chạy.

New trạng: tôi có một dự án gradle chính mà không làm bất cứ điều gì nhưng giữ 3 module

  • lõi
  • androidversion
  • rasberryPiVersion

Mỗi các mô đun có tệp gradle riêng nhưng chỉ có thể xây dựng mô-đun android và rasberryPi. Trong các phụ thuộc của chúng (trong tệp build.gradle tương ứng), chúng biên dịch dựa vào mô-đun "lõi". Như thế này:

dependencies { 
    compile project(':clapcore') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android:android:4.1.1.4' 
} 

Tất cả 500 bài kiểm tra của tôi bây giờ là cốt lõi. Vì vậy, khi tôi làm gradlew clean assembleDebug testDebug trên mô-đun Android, không có kiểm tra nào được phát hiện và thư mục kết quả thử nghiệm trống.

Tôi cố gắng để chạy lệnh testDebug trên mô-đun lõi trực tiếp, nhưng vì nó không xây dựng bởi chính nó, tôi nhận được lỗi:

FAILURE: Build failed with an exception. 

* What went wrong: 
Task 'testDebug' not found in project ':core'. 

Vì vậy, câu hỏi của tôi là: Có cách nào, trong gradle, để nói cho "testDebug" lệnh để chạy tất cả các bài kiểm tra đó là phụ thuộc vào mô-đun của nó (lõi)?

Tôi cũng đã cố gắng thêm một testCompile trong sự phụ thuộc của mô-đun android nhưng nó không làm việc, như thế này:

dependencies { 
    compile project(':clapcore') 
    testCompile project(':clapcore') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android:android:4.1.1.4' 
} 

Cảm ơn!

EDIT Tôi đã phát hiện ra rằng tôi có thể làm lệnh gradlew build trên lõi và nó sẽ chạy thử nghiệm trong 'lõi' module. Nhưng tôi muốn một cách để chạy thử nghiệm bằng cách "thác" nếu có thể.

* EDIT 2 * Tôi đã phát hiện ra rằng tôi có thể làm lệnh gradlew buildNeeded trên mô-đun 'android' và nó sẽ làm một xây dựng cho mô-đun android và lõi. Thật không may, nó chỉ xây dựng trong bản phát hành! Nếu ai đó có thể chỉ cho tôi một cách để sử dụng chức năng này nhưng trong gỡ lỗi, nó sẽ là tuyệt vời. Tôi cần nó trong gỡ lỗi bởi vì việc phát hành xây dựng khởi động nhiều nhiệm vụ hơn như thay đổi của phiên bản, cam kết git, đẩy, vv ... Điều này chỉ cho một xây dựng hàng đêm, vì vậy nó cần phải được gỡ lỗi.

Trả lời

0

Sau khi đọc tài liệu của trang web Gradle, tôi phát hiện ra rằng hàm rất đẹp buildNeeded chỉ cần chạy tất cả buildType và bạn không thể thay đổi. Các hàm duy nhất cung cấp cho bạn khả năng chọn buildType là assembleDebugassembleRelease tương ứng.

Vì quá trình phát hành của tôi (tạo thẻ, cập nhật phiên bản, chuyển sang git, v.v.) đã chạy ngay sau assembleRelease, tôi bị kẹt vì chạy buildNeeded trong bản dựng hàng đêm sẽ kích hoạt quá trình phát hành.

Vì vậy, tôi đã sửa đổi tệp build.gradle của mình để tạo một tác vụ có tên là releaseVersion phụ thuộc vào zipalignRelease. Vì vậy, khi tôi thực sự muốn tạo bản phát hành, tôi gọi releaseVersion nhưng khi tôi chỉ muốn xây dựng/thử nghiệm trong bản dựng hàng đêm, tôi gọi lệnh buildNeeded.

Những điều cần xem: Kết quả kiểm tra sẽ nằm trong mỗi thư mục "xây dựng" của từng mô-đun. Hãy cẩn thận để làm sạch tất cả các mô-đun nếu bạn đang sử dụng CI.

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