android - Espresso 测试失败 : No interface method trackUsage() in UsageTracker. java

标签 android unit-testing junit android-espresso

当在 Espresso 测试中运行的行滚动到 RecyclerView 列表中的某个元素时,我收到运行时错误 UsageTracker.java 中没有接口(interface)方法 trackUsage():

   onView(withId(R.id.recyclerView)).perform(scrollTo(hasDescendant(withText(text))));

我正在为 scrollTo() 方法使用 RecyclerViewActions

这是我当前的配置和 gradle 依赖项:

  • Android Studio 3.0 Canery 9
  • compileSdkVersion 25
  • buildToolsVersion "26.0.1"
  • junit:junit:4.12
  • com.android.support.test:runner:1.0.0
  • com.android.support.test:rules:1.0.0
  • com.android.support.test.espresso:espresso-contrib:2.2.2
  • com.android.support.test.espresso:espresso-core:2.2.2
  • Android 支持库:25.3.1

此外,对于每个 androidTestCompile,我都使用以下排除项:

  • 排除组:'com.android.support',模块:'appcompat'
  • 排除组:'com.android.support',模块:'support-v4'
  • 排除组:'com.android.support',模块:'support-annotations'
  • 排除模块:'recyclerview-v7'

完整错误信息: 类 Landroid/support/test/internal/runner/tracker/UsageTracker 中没有接口(interface)方法 trackUsage(Ljava/lang/String;)V;或其父类(super class)('android.support.test.internal.runner.tracker.UsageTracker' 的声明出现在/data/app/adamhurwitz.github.io.doordashlite.test-2/base.apk 中)

最佳答案

我在使用rules 1.0.0runner 1.0.0 时遇到了同样的问题。虽然我能够通过添加 espresso-core 3.0.0 来解决它。这避免了使用过时的版本,例如 Erics 回答中建议的版本。

com.android.support.test:rules:1.0.0 
com.android.support.test.runner:1.0.0 
com.android.support.test.espresso:espresso-core:3.0.0

编辑: 同时,应该使用 AndroidX 库,截至 2021/12 的当前版本是:

androidx.test:rules:1.4.0
androidx.test:runner:1.4.0
androidx.test:core:1.4.0
androidx.test.espresso:espresso-core:3.4.0

最新版本通常可以在 Android Developers page 上找到.

关于android - Espresso 测试失败 : No interface method trackUsage() in UsageTracker. java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45541666/

相关文章:

android - 在android中更改 ListView 的文本颜色

angular - 错误 : StaticInjectorError(DynamicTestModule)[NotificationsComponent

c++ - 我可以在设置期望后复制一个谷歌模拟对象吗?

使用 Jasmine 的 TypeScript 中的 AngularJS 单元测试未运行

Javamail 奇怪的行为

java - 如果我在循环内以编程方式运行垃圾收集器。它会影响我的 Android 应用程序吗?

android - 如何在android中将图像转换为视频

java - 通知用户他最喜欢的比赛

java - 使用 Spring 进行 JUnit 测试

java - Maven 没有运行 Spring Boot 测试