当我尝试在UI测试中使用MockK时,我遇到了一个错误,这个测试在Unittest中非常有效。
MockK could not self-attach a jvmti agent to the current VM
全错误报告
Caused by: io.mockk.proxy.MockKAgentException: MockK could not self-attach a jvmti agent to the current VM. This feature is required for inline mocking.
This error occured due to an I/O error during the creation of this agent: java.io.IOException: Unable to dlopen libmockkjvmtiagent.so: dlopen failed: library "libmockkjvmtiagent.so" not found
Potentially, the current VM does not support the jvmti API correctly
at io.mockk.proxy.android.AndroidMockKAgentFactory.init(AndroidMockKAgentFactory.kt:67)
at io.mockk.impl.JvmMockKGateway.<init>(JvmMockKGateway.kt:46)
at io.mockk.impl.JvmMockKGateway.<clinit>(JvmMockKGateway.kt:186)
... 30 more
Caused by: java.io.IOException: Unable to dlopen libmockkjvmtiagent.so: dlopen failed: library "libmockkjvmtiagent.so" not found
at dalvik.system.VMDebug.nativeAttachAgent(Native Method)
at dalvik.system.VMDebug.attachAgent(VMDebug.java:693)
at android.os.Debug.attachJvmtiAgent(Debug.java:2617)
at io.mockk.proxy.android.JvmtiAgent.<init>(JvmtiAgent.kt:48)
at io.mockk.proxy.android.AndroidMockKAgentFactory.init(AndroidMockKAgentFactory.kt:40)
让我知道是否有其他方法来初始化MockK,以便在Espresso中使用
当尝试添加
androidTestImplementation "org.mockito:mockito-inline:$mockitoVersion"
观察到这个错误
与路径'mockito-extensions/org.mockito.plugins.MockMaker'.一起找到的2个文件添加packagingOptions块可能有帮助,请参阅https://developer.android.com/reference/tools/gradle-api/7.2/com/android/build/api/dsl/ResourcesPackagingOptions以获得更多信息
版本
mockk version = 1.12.4
Android = 32
kotlin_version = '1.6.21'
代码,它在android测试用例(Espresso)中添加时会导致此问题。
val presenter = mockk<LoginPresenter>()
val view = mockk<LoginView>()
如何执行类似于此的模拟api调用
val presenter = mockk<LoginPresenter>()
val view = mockk<LoginView>()
onView(withId(R.id.button_login)).perform(loginClick())
但是我希望在loginClick()中调用模拟api,而不是()中的,我可以调用一些下面的执行方式,以便我的应用程序使用模拟api,或者有什么方法使整个测试用例文件使用mockk数据?
every { presenter.onLoginButtonClicked("bc@mail.com","Abc123") } returns view.onCognitoLoginSuccess()
发布于 2022-10-17 09:21:15
对我来说,这解决了问题:
android {
testOptions {
packagingOptions {
jniLibs {
useLegacyPackaging = true
}
}
}
}
我找到了这个这里。希望能帮上忙。
https://stackoverflow.com/questions/73146494
复制相似问题