我的问题似乎与此处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.jar
,robotium-solo-1.6.0.jar
,以消除solo.
函数和jay.way package
下面的红色错误行。
我附上错误截图:
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) <<
答案 0 :(得分:34)
对于那些迁移到或当前使用Androidx
的用户,此错误是由于使用
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
而不是testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
。
使用后者可以完全解决错误。
答案 1 :(得分:6)
不要附加多个robotium库。应删除robotium-solo-1.6.0.jar。它已被弃用,你真的不应该再使用它了。
您的目标应用程序是否已安装?如果要为它运行测试,应该安装它。仅当测试项目引用目标项目时,才能安装它。
如果您有应用程序和工具的单独APK,则应更改清单中的包。你实际上有“com.testcalculator”和目标包是相同的 - 它们应该是不同的。顺便说一句,我没有在您的项目中看到应用程序的来源,因此应删除应用程序部分。
您的错误并没有多说,从LogCat发布堆栈跟踪总是好的。
在开始编写测试之前阅读手册:
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。