android / android/android-test

Instrumented test results outputs nothing when test collection failed(process crashed) with AndroidX test orchestrator

Open
#1,834 4 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.