Pertanyaan Tes Instrumentasi Android gagal pada Travis CI AVD tetapi bekerja pada emulator lokal


Jika saya menjalankan pengujian instrumentasi pada emulator lokal saya, mereka menjalankan 10 dari 10 kali dengan sempurna tetapi ketika saya mencoba menjalankan tes yang sama pada AVD di Travis CI, saya secara acak mendapatkan

FAILED java.lang.RuntimeException: Could not launch intent Intent { } within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time? There could be an animation or something constantly repainting the screen. Or the activity is doing network calls on creation? See the threaddump logs. For your reference the last time the event queue was idle before your activity launch request was xxxxxxx and now the last time the queue went idle was: xxxxxxxxx. If these numbers are the same your activity might be hogging the event queue.

Saya telah mencoba menghapus semua progress bar dan segalanya tetapi masih merupakan masalah yang hanya terjadi secara acak dan di Travis. Travis.yml saya terlihat seperti ini:

env:
  global:
    - ANDROID_TARGET=android-19
    - ANDROID_ABI=armeabi-v7a
  before_script:
      - android list targets
      - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI
      - emulator -avd test -no-skin -no-audio -no-window -no-boot-anim &
      - android-wait-for-emulator
      - adb shell input keyevent 82 &
    script:
      - ./gradlew jacocoTestReport assembleAndroidTest connectedCheck zipalignRelease

8
2017-09-22 13:59


asal


Jawaban:


Jika ingin digunakan android-wait-for-emulator skrip, silakan menghapus itu -no-boot-anim pilihan itu tergantung pada untuk mendeteksi kapan emulator sudah siap.

Atau, ganti android-wait-for-emulator skrip dengan tetap waktu tidur seperti ini:

  - sleep 300
  - adb shell input keyevent 82 &

Anda harus memilih waktu tidur berdasarkan setiap durasi boot API.


0
2017-10-29 12:37