2016-04-18 22 views
7

Tôi là một QA với công ty khởi nghiệp. Nhà phát triển của tôi thiết lập Kiểm tra thiết bị đo đạc trong Dự án Android. Ông cũng thiết lập công việc Jenkins để chạy các xét nghiệm này trong CI env.connectedAndroidTest cách chạy thử nghiệm cụ thể

Đây là lệnh được đưa ra trong trường "Tác vụ" trong công việc Jenkins trong Kịch bản lệnh Build -> Invoke Gradle. clean assembleDebug connectedAndroidTest testDebug

Tôi muốn tạo công việc Jenkins của riêng mình để chạy các loại thử nghiệm khác nhau. Có cách nào để tôi có thể lọc các thử nghiệm của mình chỉ bằng cách chạy lệnh "connectedAndroidTest" không? Tôi đã thử sử dụng tập lệnh shell như sau, nhưng nó không hoạt động. adb shell pm cụ -w/

Tôi nhận được thông báo lỗi sau: [Execute Test Suite Khói] $/bin/bash -xe /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh + adb shell am instrument -w '' lớp com.draysonwireless.airmapandroid.rewards/BonusTest.java /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh: dòng 2: adb: lệnh không tìm thấy Xây dựng bước 'Thi công vỏ 'đánh dấu xây dựng là thất bại Đã hoàn tất: FAILURE

+0

Câu hỏi của bạn chưa đủ rõ ràng. Dường như hiểu biết kỹ thuật của bạn hạn chế bạn hiểu được nguyên nhân của vấn đề. Tôi khuyên bạn nên xem qua một vài hướng dẫn và sau đó quay lại đây với một câu hỏi cụ thể hơn. –

+0

@ Alex.F Xin lỗi, tôi đồng ý rằng câu hỏi này hơi mơ hồ. Về cơ bản, tôi đang tìm cách để chỉ chạy các bài kiểm tra cụ thể trong các công việc của Jenkins. Nếu tôi đang sử dụng Maven, tôi biết rằng có một cách để chạy thử nghiệm cụ thể bằng cách sử dụng thẻ (chú thích). Có cách nào tương tự để Gradle xây dựng không? – jellyBeans

Trả lời

9

Dường như người dùng jenkins của bạn không thể thấy android adb do đó không thành công. Thêm adb vào đường dẫn hệ thống hoặc trỏ đến vị trí chính xác của nó.

Như để chạy thử nghiệm cụ thể thông qua lệnh gradle dưới đây là một ví dụ:

./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest#testMethodName

Taken từ here với sửa đổi chút ít tôi. Lệnh connectedAndroidtest của bạn có thể khác nhau tùy thuộc vào sự tồn tại của hương vị thử nghiệm.

+0

Cảm ơn denys. Tôi nhận được lỗi sau com.android.builder.testing.ConnectedDevice> Không tìm thấy thử nghiệm nào. [Google Nexus 5 - 5.1.0 - API 22 - 1080x1920 - 5.1] FAILED Không tìm thấy thử nghiệm nào. Điều này thường có nghĩa là các lớp thử nghiệm của bạn không ở dạng mà thử nghiệm của bạn mong đợi (ví dụ: không kế thừa từ TestCase hoặc thiếu chú thích @Test). : ứng dụng: connectedDebugAndroidTest – jellyBeans

+0

@jellyBeans kiểm tra tên gói như 'com.android.builder.testing'. Nó sẽ là một trong các gói bạn sẽ nhận được sau khi bạn chạy lệnh này 'adb shell pm list instrumentation'. – denys

+0

Tôi nghĩ rằng, lỗi này là để làm với Emulator. Khi tôi sử dụng trình mô phỏng khác, không thấy lỗi này nữa. Tuy nhiên, có một ngoại lệ khác đang xảy ra INSTRUMENTATION_STATUS: Lỗi = Không thể tìm thấy thông tin thiết bị cho: ComponentInfo {com.company.project.SignUpScreeTest/android.support.test.runner.AndroidJUnitRunner} – jellyBeans

0

Đây là shell script tôi đã sử dụng trong công việc của Jenkins của tôi:

export PATH=$PATH:/Users/Shared/Jenkins/Library/Android/sdk/platform-tools 
adb shell am instrument -w -r -e debug false -e class com.company.project.test.SmokeTest com.company.project.debug.test/android.support.test.runner.AndroidJUnitRunner 

Cấu trúc thư mục cần được như sau: ứng dụng -> src -> androidTest -> java -> com. company.project -> test -> TestClass

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