gpt4 book ai didi

android - 测试错误 - NoClassDefFoundError : Failed resolution of: Lorg/hamcrest/Matchers

转载 作者:行者123 更新时间:2023-12-04 23:40:11 28 4
gpt4 key购买 nike

我正在使用 Espresso 进行仪器测试,但在堆栈跟踪中出现此错误:
enter image description here
错误是由缺少的类引起的,如下所示:

Caused by: java.lang.ClassNotFoundException: Didn't find class "org.hamcrest.Matchers" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.base.jar", zip file "/data/app/~~vnZzxGNKnS4V6YkEf4falA==/com.example.android.architecture.blueprints.reactive.test-K_x0_yJ0hJeDHaJkDmHXRw==/base.apk", zip file "/data/app/~~oeYx2MgTcILbk-vq_WPx1A==/com.example.android.architecture.blueprints.reactive-0wMHYEe95hx_1cnbdAoZAw==/base.apk"],nativeLibraryDirectories
它是在我在 fragment 测试中添加此代码后立即发生的:
enter image description here
这些是我在 Gradle 上的相关库:
enter image description here
我有这些进口:
import androidx.fragment.app.testing.launchFragmentInContainer
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.hamcrest.core.IsNot.not

最佳答案

TLDR 回答 ,您无需降级整个 ​​espresso 设置
Hamcrest 版本与传递依赖存在冲突,可以轻松解决:
如果您正在使用:

androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'

//change it to:
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.3.0'
如果您正在使用:
androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.4.0'

//change it to:
androidTestImplementation "androidx.test.espresso:espresso-accessibility:3.3.0"
您应该仍然能够将 espresso 核心保持在更高的 3.4.0 版本

如果您想了解,这里是更长的解释:
要查看幕后发生的事情,我们可以在 android studio 终端中使用依赖项 gradle 任务打印出依赖关系树:
./gradlew :app:dependencies
我们可以运行它两次,使用两个版本级别的依赖关系,并可以检查差异。
  • 在某些情况下,请求 hamcrest 库 1.3 版与大多数常见的 android 依赖项相匹配。
  • 在左侧(v3.3.0 的依赖关系树)每个 hamcrest 传递依赖都按要求提供 ,毫不奇怪它有效!
  • 在右侧(v3.4.0 的依赖关系树),我们可以看到一些请求在更高版本中“替代”了 hamcrest 库,在这种情况下,它不起作用。

  • [ Gradle dependency tree comparison1

    关于android - 测试错误 - NoClassDefFoundError : Failed resolution of: Lorg/hamcrest/Matchers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66915068/

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