GitHub Actions 运行 Espresso 测试

Qui*_*don 5 continuous-integration android-espresso github-actions

我目前正在尝试使用 GitHub Actions 运行我的Instrumentation 测试。我的单元测试运行良好,但我似乎无法运行 Espresso 测试。我目前正在尝试:

    - name: Run Instrumentation Tests (reactivecircus)
    uses: reactivecircus/android-emulator-runner@v2.6.1
    with:
      api-level: 23
      target: default
      arch: x86
      profile: Nexus 6
      script: ./gradlew connectedCheck --stacktrace
Run Code Online (Sandbox Code Playgroud)

我得到结果:

com.balsdon.ratesapp.behaviour.RateListActivityEntryBehaviourInstrumentedTest > recyclerViewClickOnItemChangesMain[test(AVD) - 6.0] FAILED 
    android.content.res.Resources$NotFoundException: Resource ID #0x7f0700d3
    at android.content.res.Resources.getValue(Resources.java:1351)
Tests on test(AVD) - 6.0 failed: Instrumentation run failed due to 'android.content.res.Resources$NotFoundException'

> Task :app:connectedOfflinemockDebugAndroidTest FAILED
> Task :app:processOnlineecbDebugAndroidTestResources
> Task :app:processProductionDebugAndroidTestResources

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:connectedOfflinemockDebugAndroidTest'.
> There were failing tests. See the report at: file:///Users/runner/runners/2.165.2/work/currency_list_app/currency_list_app/app/build/reports/androidTests/connected/flavors/OFFLINEMOCK/index.html
Run Code Online (Sandbox Code Playgroud)

当我使用时:

    - uses: malinskiy/action-android/emulator-run-cmd@release/0.0.5
    with:
      cmd: ./gradlew integrationTest
      api: 23
      tag: default
      abi: x86
Run Code Online (Sandbox Code Playgroud)

我明白了

/Users/runner/android-sdk/platform-tools/adb -s emulator-5554 shell getprop sys.boot_completed
error: device 'emulator-5554' not found
The process '/Users/runner/android-sdk/platform-tools/adb' failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

如果您想查看我的所有尝试,您可以查看我的拉取请求中的所有提交

Chr*_*ras 5

您在本地运行的模拟器版本,很可能比API 23Android 版本更新。在github actions 脚本上,您使用以下命令运行模拟器API 23

    uses: reactivecircus/android-emulator-runner@v2
    with:
      api-level: 23
      target: default
      arch: x86
      profile: Nexus 6
      script: ./gradlew connectedCheck --stacktrace
Run Code Online (Sandbox Code Playgroud)

并且在您的项目内部有一个app/src/main/res/drawable-v24内部资源,因此它不适用于具有< 24 API版本的模拟器。您要么必须更改该目录,drawable-v23要么将资源移动到drawable旧版本可以访问的其他目录。

即使您将可绘制目录更改为drawable-v23,Espresso 也可能会出现问题。您要么必须解决该版本,要么必须为 GitHub 操作模拟器使用更新的 API 版本,可能与您的开发环境相同。