gpt4 book ai didi

android - 在 Android 4.4 上运行 Espresso 测试?

转载 作者:行者123 更新时间:2023-12-03 04:28:20 25 4
gpt4 key购买 nike

我正在尝试将我们的应用迁移到使用 Espresso 进行 UI 测试,但我无法让 Gradle 使用运行 Android 4.4(API 19,我们的最低部署目标)的设备找到我的测试。 Android 6.0 (API 23) 上的测试运行良好。我将 JUnit 运行器和依赖项添加到 app/build.gradle根据 thisthis (由于模块之间的版本冲突,我排除了注释):

android {
...
defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}

dependencies {
...
androidTestCompile("com.android.support.test.espresso:espresso-core:2.2.2") {
exclude module: 'support-annotations'
}
androidTestCompile("com.android.support.test:runner:0.5") {
exclude module: 'support-annotations'
}
androidTestCompile("com.android.support.test:rules:0.5") {
exclude module: 'support-annotations'
}
}

然后我创建了所需的目录结构 app/src/androidTest/java/和一个包裹 com.companyname.appname和一个 java 类 EspressoTest.java带有一些模拟测试代码:
@RunWith(AndroidJUnit4.class)
public class EspressoTest {

@Rule
public ActivityTestRule<TermsOfUse> termsOfUseActivityTestRule = new ActivityTestRule<>(TermsOfUse.class);

@Test
public void iAmAtTouView() {
onView(withId(R.id.terms_of_use_content)).check(matches(isDisplayed()));
}
}

如果我右键单击测试类 EspressoTest并选择“运行'EspressoTest'”我得到一个错误:
$ adb shell am instrument -w -r   -e package com.companyname.appname -e debug false com.companyname.appname.qa.test/android.support.test.runner.AndroidJUnitRunner
Client not ready yet..
Started running tests
Test running failed: Instrumentation run failed due to 'Process crashed.'
Empty test suite.

另外,如果我输入 ./gradlew connectedAndroidTest在命令行中我得到:
Starting 0 tests on GT-I9305 - 4.4.4
Tests on GT-I9305 - 4.4.4 failed: Instrumentation run failed due to 'Process crashed.'

com.android.builder.testing.ConnectedDevice > No tests found.[GT-I9305 - 4.4.4] FAILED
No tests found. This usually means that your test classes are not in the form that your test runner expects (e.g. don't inherit from TestCase or lack @Test annotations).
:app:connectedAuditDebugAndroidTest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:connectedAuditDebugAndroidTest'.
> There were failing tests. See the report at:
...

所以对我来说,在尝试使用 Android 设备执行测试任务时,Gradle 似乎无法识别我的测试类。我怎样才能解决这个问题?

最佳答案

您必须启用 multidex,因为您的 *-androidTest.apk包含超过 64k 的方法?
如果是这样,您需要确保第一个 dex 文件 ( classes.dex ) 包含所有 *Test您要运行的类(class)。您可以这样配置:

android {
defaultConfig {
multiDexEnabled true
multiDexKeepProguard file('multidex-config.pro')
}
}
在你的 multidex-config.pro您添加常规 -keep测试类的规则,例如
-keep class path.to.my.package.**.*Test { *; }
如果您的测试类在您自己的包路径之外有依赖关系,请确保将它们也包含在单独的 -keep 中。陈述。留意 java.lang.ClassNotFoundExceptionadb logcat识别缺失的类。

关于android - 在 Android 4.4 上运行 Espresso 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com