android / android/android-test
Instrumented test results outputs nothing when test collection failed(process crashed) with AndroidX test orchestrator
- Dominant language
- Java
- Stars
- 1.2k
- Forks
- 342
- Avg merge
- 11h 29m
- Merged PRs (30d)
- 2
Description
### Description
My code changes caused exception at Application.onCreate(), and instrumented tests run via AndroidX test orchestrator.
execution command line like:
```
// prepare AndroidX test orchestrator
....
adb shell 'CLASSPATH=$(pm path androidx.test.services) app_process / androidx.test.services.shellexecutor.ShellMain am instrument -w -r -e coverageFilePath coverage_files/ -e useTestStorage true -e coverage true -e clearPackageData true -e targetInstrumentation com.mypackage.test/androidx.test.runner.AndroidJUnitRunner androidx.test.orchestrator/.AndroidTestOrchestrator'
INSTRUMENTATION_RESULT: stream=
Time: 0
OK (0 tests)
INSTRUMENTATION_CODE: 0
```
And there is one details file at `adb shell run-as androidx.test.orchestrator cat /data/user_de/0/androidx.test.orchestrator/files/testCollection.txt`.
```
INSTRUMENTATION_STATUS: stack=java.io.FileNotFoundException: my_data.json
at android.content.res.AssetManager.nativeOpenAsset(Native Method)
at android.content.res.AssetManager.open(AssetManager.java:824)
at android.content.res.AssetManager.open(AssetManager.java:801)
at ...
at com.mypackage.test.ShellApplication.onCreate(ShellApplication.kt:73)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1189)
at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
INSTRUMENTATION_STATUS: stream=
Process crashed before executing the test(s):
java.io.FileNotFoundException: my_data.json
at android.content.res.AssetManager.nativeOpenAsset(Native Method)
at android.content.res.AssetManager.open(AssetManager.java:824)
at android.content.res.AssetManager.open(AssetManager.java:801)
at ....
at com.mypackage.test.ShellApplication.onCreate(ShellApplication.kt:73)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1189)
at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:483)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
INSTRUMENTATION_STATUS_CODE: -2
INSTRUMENTATION_RESULT: shortMsg=Process crashed.
INSTRUMENTATION_CODE: 0
```
### Steps to Reproduce
1. raise exception at Application.onCreate().
2. run tests using AndroidX test orchestrator.
### Expected Results
See process crashed details in instrumented tests results outputs to indicate test failure.
### Actual Results
No process crashed details in instrumented tests results outputs and indicate test success.
### AndroidX Test and Android OS Versions
Android API Level 29
AndroidX Test Orchestrator 1.4.2
### Link to a public git repo demonstrating the problem:
None currently.
Contributor guide
Research direction
Start with the AndroidX test orchestrator instrumentation-result handling and the reported testCollection.txt output; reproduce the Application.onCreate() crash using the documented adb command on API 29. Trace why the recorded crash details are not reflected in the final instrumentation output, and consider the issue done when the process crash is reported as a test failure rather than OK (0 tests).
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- mobile-dev, testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100