Android测试项目崩溃,出现错误“测试运行失败:由于'进程崩溃导致仪表运行失败'。”

时间:2014-02-06 14:09:29

标签: android automation robotium

我的问题似乎与此处Test run failed: Instrumentation run failed due to 'Process crashed.' when testing multiple Android activity没有什么不同
我遵循in the pdf给出的步骤。我已经创建了测试项目“TestAndroidCalculatorBlackbox”(我们需要有两个项目一个测试和一个主项目,也许这可能是原因,因为在Robotium“入门”链接他们希望我们为记事本创建项目),
并添加了jars robotium-solo-5.0.1.jarrobotium-solo-1.6.0.jar,以消除solo.函数和jay.way package下面的红色错误行。
我附上错误截图: Project tree and error screen shot y AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.testcalculator"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.testcalculator" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:debuggable="true">
        <uses-library android:name="android.test.runner" />
    </application>

</manifest>

我在检测列表中添加了包:

 c:\> adb shell pm list instrumentation
instrumentation:PACKAGE.test.test/android.test.InstrumentationTestRunner (target=PACKAGE)
instrumentation:PACKAGE.test.test.test.test.test.test/android.test.InstrumentationTestRunner (target=PACKAGE.test.test)
instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis)
>> instrumentation:com.testcalculator/android.test.InstrumentationTestRunner (target=com.testcalculator) <<

5 个答案:

答案 0 :(得分:34)

对于那些迁移到或当前使用Androidx的用户,此错误是由于使用 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"而不是testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

使用后者可以完全解决错误。

答案 1 :(得分:6)

  1. 不要附加多个robotium库。应删除robotium-solo-1.6.0.jar。它已被弃用,你真的不应该再使用它了。

  2. 您的目标应用程序是否已安装?如果要为它运行测试,应该安装它。仅当测试项目引用目标项目时,才能安装它。

  3. 如果您有应用程序和工具的单独APK,则应更改清单中的包。你实际上有“com.testcalculator”和目标包是相同的 - 它们应该是不同的。顺便说一句,我没有在您的项目中看到应用程序的来源,因此应删除应用程序部分。

  4. 您的错误并没有多说,从LogCat发布堆栈跟踪总是好的。

  5. 在开始编写测试之前阅读手册:

    http://developer.android.com/tools/testing/testing_android.html https://code.google.com/p/robotium/w/list

答案 2 :(得分:1)

遇到同样的问题,并通过设置AndroidJUnitRunner https://developer.android.com/training/testing/junit-runner.html

来解决此问题

答案 3 :(得分:0)

针对尚未使用androidx的开发人员。看到 LogCat 为我解决了这个问题,该问题由于RxJava而删除了在错误线程中运行的这些行。

companion object {
    @get:ClassRule @JvmStatic
    val testSchedulerRule = RxImmediateSchedulerRule()
}

答案 4 :(得分:0)

在我的情况下,这是由AndroidJUnitRunner导致的StrictMode策略违规:

D/StrictMode: StrictMode policy violation: android.os.strictmode.UntaggedSocketViolation: [...]
W/System.err: StrictMode VmPolicy violation with POLICY_DEATH; shutting down.

在运行Espresso测试时禁用检查detectUntaggedSockets()可以为我修复该问题。有关如何检查的信息,请参见this question