Espresso测试失败:UsageTracker.java中没有接口方法trackUsage()

Ada*_*itz 12 junit android unit-testing android-espresso

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

   onView(withId(R.id.recyclerView)).perform(scrollTo(hasDescendant(withText(text))));
Run Code Online (Sandbox Code Playgroud)

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

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

  • Android Studio 3.0 Canery 9
  • compileSdkVersion 25
  • buildToolsVersion"26.0.1"
  • JUnit的:JUnit的:4.12
  • com.android.support.test:亚军:1.0.0
  • com.android.support.test:规则:1.0.0
  • com.android.support.test.espresso:浓咖啡的contrib:2.2.2
  • com.android.support.test.espresso:咖啡核:2.2.2
  • Android支持库:25.3.1

另外,对于每个androidTestCompile,我使用以下排除:

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

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

Mic*_*ger 32

我遇到了规则1.0.0和跑步者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
Run Code Online (Sandbox Code Playgroud)

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

androidx.test:rules:1.1.0
androidx.test:runner:1.1.0
androidx.test:core:1.0.0
androidx.test.espresso:espresso-core:3.1.0
Run Code Online (Sandbox Code Playgroud)

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


Eri*_*niz 5

我有同样的问题.为了解决这个问题,我更改了以下依赖项:

com.android.support.test:runner:1.0.0
com.android.support.test:rules:1.0.0
Run Code Online (Sandbox Code Playgroud)

至:

com.android.support.test:runner:0.5
com.android.support.test:rules:0.5
Run Code Online (Sandbox Code Playgroud)

更新:

迈克尔的答案更好,不要再使用这个过时的版本了!