2017-03-03 18 views
12

nềnconnectedAndroidTest trên nhiều giả lập

Tôi muốn chạy thử nghiệm Android instrumented tôi trên Jenkins trên giả lập khác nhau. Giả sử tôi có 100 bài kiểm tra và 4 trình giả lập, tôi muốn chạy 25 bài kiểm tra trên mỗi bài kiểm tra.

tôi thực hiện ./gradlew connectedDebugAndroidTest song song Jenkins đường ống cho 4 giả lập

stage('Instrumented Tests') { 
    parallel(
      emu1: { 
       runInstrumentedTestOnEmu(...) 
      }, 
      emu2: { 
       runInstrumentedTestOnEmu(...) 
      } 
      ... 
    ) 
} 

connectedDebugAndroidTest sẽ đẻ trứng lệnh khác để thiết lập môi trường cho chạy thử nghiệm instrumented.

... 
:app:transformNativeLibsWithMergeJniLibsForDebugAndroidTest 
:app:processDebugAndroidTestJavaRes NO-SOURCE 
:app:transformResourcesWithMergeJavaResForDebugAndroidTest 
:app:validateSigningDebugAndroidTest 
:app:packageDebugAndroidTest 
:app:assembleDebugAndroidTest 
:app:connectedDebugAndroidTest 

Và khi môi trường sẵn sàng thì nó sẽ bắt đầu chạy thử nghiệm trên trình giả lập.

Tôi không muốn chạy các thủ tục này cho tất cả các cuộc gọi song song của tôi (trong trường hợp này nó sẽ là 4 trong số đó), bởi vì rõ ràng tôi đang làm công việc chính xác nhiều lần. Về mặt lý thuyết, tùy chọn tốt nhất là thực hiện thiết lập trước parallel và khi mọi thứ đã sẵn sàng để chạy thử nghiệm, sau đó đi vào các bước kiểm tra bắt đầu từng bước và bắt đầu trên mỗi trình giả lập.

Câu hỏi

Có thể thực hiện tất cả các bước trước thiết lập của connectedDebugAndroidTest mà không thực hiện bản thân?

Ngoài ra, nếu tôi chạy connectedDebugAndroidTest song song trên 4 trình mô phỏng sự cố xây dựng, vì gradle cố gắng đọc tệp từ thư mục intermediate, khi xây dựng song song khác đã xóa tệp đó.

Bạn có thể xem this test project in github với thiết lập được đề cập ở trên.

Trả lời

8

Có thể thực hiện tất cả các bước thiết lập trước được kết nốiDebugAndroidTest mà không tự thực hiện không?

Có, bạn có thể chạy assembleDebugAndroidTest, như bản ghi nhật ký xây dựng của bạn, là điều kiện tiên quyết cuối cùng để chạy thử nghiệm thiết bị. Việc chạy đó sẽ tạo cả APK ứng dụng và APK thử nghiệm.

Mặc dù AFAIK, không có một cách để sharding kiểm tra của bạn trên nhiều giả lập khi sử dụng Gradle - bạn sẽ phải cài đặt cả hai gói ứng dụng vào mỗi giả lập và sử dụng adb shell am instrument với các tùy chọn numShardsshardIndex.

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