问题描述
有很多关于此问题的主题/问题(例如 Error =无法找到以下信息的检测信息:ComponentInfo { } )和其他网站,但令我的问题与其他网站不同的是我正在致力于自动化.因此,让我为您提供更多详细信息.
There are a lot of topics/questions regard this issue on stackoverflow (such as Error=Unable to find instrumentation info for: ComponentInfo{ }) and other website but the thing that make my problem different than others is I am working on automation. So let me give you more details.
在本地计算机(我的意思是我的笔记本电脑)上进行测试时,我没有问题.我可以运行Espresso测试并通过所有测试.
I have no problem when I'm testing on local machine (I mean my laptop). I can run Espresso testing and all tests passes.
现在,我想在CI(以我的情况为Bitrise)上运行这些测试.我创建并运行模拟器.我确认那里没有问题.我有以下脚本:
Now, I want to run these tests on CI (Bitrise in my case). I create and run Emulator. I confirm there is no issue there. I have following script:
...
# Check which instrumentation packages have been installed on your device, https://stackoverflow.com/a/23394559/513413
echo ""
echo "Check which instrumentation packages have been installed..."
adb shell pm list instrumentation
# Running tests
echo ""
echo "running test..."
adb shell am instrument -w -r -e debug false -e class my.package.name.MyActivityTest my.package.name.test/android.support.test.runner.AndroidJUnitRunner
这是我从CI的输出:
Check which instrumentation packages have been installed...
instrumentation:com.android.emulator.smoketests/android.support.test.runner.AndroidJUnitRunner (target=com.android.emulator.smoketests)
instrumentation:com.android.smoketest.tests/com.android.smoketest.SmokeTestRunner (target=com.android.smoketest)
instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis)
running test...
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{my.package.name.test/android.support.test.runner.AndroidJUnitRunner}
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: my.package.name.test/android.support.test.runner.AndroidJUnitRunner
at com.android.commands.am.Am.runInstrument(Am.java:1093)
at com.android.commands.am.Am.onRun(Am.java:371)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
at com.android.commands.am.Am.main(Am.java:100)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:251)
我在app.gradle
文件的defaultConfig
中有以下代码行:
I have following line of code in defaultConfig
of app.gradle
file:
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
如下面的链接所示,我的EditConfiguration下有android.support.test.runner.AndroidJUnitRunner
.
I have android.support.test.runner.AndroidJUnitRunner
under my EditConfiguration as you see in the following link.
我猜我的测试失败了,因为我的CI仿真器中没有此命令.所以我的问题是如何通过命令行添加它?有可能吗?
I guess my test fails because I don't have this command in my CI's emulator. So my question is how I can add it via command line? Is that possible?
这是我的完整剧本.
#!/bin/bash
# List of devices attached
adb devices
# List all *.apk files inside /bitrise/deploy path
echo "List of all *.apk files in $BITRISE_DEPLOY_DIR"
cd $BITRISE_DEPLOY_DIR && ls
# Push and Install main apk file
echo ""
echo "Pushing main apk at $BITRISE_APK_PATH to /data/local/tmp/my.package.name and install it..."
adb push $BITRISE_APK_PATH /data/local/tmp/my.package.name
adb shell pm install -r "/data/local/tmp/my.package.name"
# Push and Install Test Unaligned apk file
echo ""
echo "Pushing test unaligned apk at $BITRISE_DEPLOY_DIR/my-app-debug-unaligned.apk to /data/local/tmp/my.package.name.test and install it..."
adb push $BITRISE_DEPLOY_DIR/my-app-debug-unaligned.apk /data/local/tmp/my.package.name.test
adb shell pm install -r "/data/local/tmp/my.package.name.test"
# Check which instrumentation packages have been installed on your device, https://stackoverflow.com/a/23394559/513413
echo ""
echo "Check which instrumentation packages have been installed..."
adb shell pm list instrumentation
# Running tests
echo ""
echo "switch directory to $BITRISE_SOURCE_DIR"
cd $BITRISE_SOURCE_DIR
echo "running test..."
adb shell am instrument -w -r -e debug false -e class my.package.name.path.MinHappyPathTest my.package.name.path/android.support.test.runner.AndroidJUnitRunner
推荐答案
在运行"adb shell am instrument"之前,您必须安装(adb安装)和应用APK并测试APK(这是不同的APK).
You must install (adb install) and application APK and test APK (this is different APK) before running "adb shell am instrument".
这篇关于Android报告"Error =无法找到以下设备的检测信息:ComponentInfo {}"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!