- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是将我的 Android Studio 升级到最新版本。目前我猜我的一些测试类会产生不稳定的测试结果,我想像在 Android Studio 4.2 中一样在 Android Studio 中运行重复模式。但是我发现我得到了以下异常
即使我尝试了一个简单的测试类,我仍然会收到此错误。我使用 Gradle Test runner 运行,它按预期工作,但我无法使用它重复运行测试类以查看我的测试类中是否有任何片状结果
感谢任何评论或建议:)
java.lang.NoClassDefFoundError: io/mockk/proxy/MockKAgentFactory
at io.mockk.impl.JvmMockKGateway.<init>(JvmMockKGateway.kt:198)
at io.mockk.impl.JvmMockKGateway.<clinit>(JvmMockKGateway.kt:186)
at com.example.testCorrect(Student.kt:24)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)
Caused by: java.lang.ClassNotFoundException: io.mockk.proxy.MockKAgentFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 68 more
import io.mockk.mockk
import junit.framework.Assert.assertEquals
import org.junit.jupiter.api.Test
class StudentTest {
@Test
fun testCorrect() {
val mockStudent = mockk<Student>()
assertEquals(1,1)
}
}
class Student(
val name:String
)
最佳答案
android-gradle-plugin
在 IDE 项目导入期间删除运行时依赖项。早期的 Android Studio had扩展 JUnit 运行配置类路径以包含运行时依赖项的专用 IDE 功能。现在您必须自己恢复类路径(或者最好避免在 Android 项目中运行 JUnit 配置)。 Android Studio 朝着将一切都委托(delegate)给 Gradle 的方向发展(例如,参见 https://developer.android.com/studio/preview/features#bumblebee-unified-test-runner )。
由于您使用的是 JUnit5,@RepeatedTest(10_000_000)
或类似的可能是一个更简单的选择。
TL;博士;MockKAgentFactory
可从 io.mockk:mockk-agent-api
获得.我添加了以下内容以使您的示例正常工作:
testImplementation "io.mockk:mockk:1.12.0"
testImplementation "io.mockk:mockk-agent-jvm:1.12.0"
testImplementation group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.5.30'
诀窍在于 Android Gradle 插件。它构建(至少)2 个类路径:编译和运行时。 IDE Android 插件(在 Android Studio 中)仅从编译类路径导入库(删除运行时条目)。当使用 Gradle 运行器运行测试时,IDE 将执行委托(delegate)给 gradle,而 Gradle 使用 Runtime 类路径调用测试。在 Android Studio 中使用 JUnit 运行测试时,JUnit 使用 IDE 模块的运行时类路径,正如 IDE 所见(它已经没有运行时库,因为它们在导入期间被删除)。检查外部库部分以查看添加到 IDE 项目中的确切内容。
mockk-agent-jvm
及其传递依赖
mockk-agent-api
.请注意
mockk-agent-jvm
是
RUNTIME
io.mockk:mockk
的依赖关系(见
https://repo1.maven.org/maven2/io/mockk/mockk/1.12.0/mockk-1.12.0.pom)。
android-gradle-plugin
在导入期间删除运行时依赖项。从带有 gradle 运行配置的 IDE 运行时,您可以在任何测试方法的开头设置断点并检查堆栈跟踪。完整的测试运行时类路径在 gradle 调用 JUnitRunner 之前的一帧可用。例如。:
关于Android Studio 北极狐无法使用 mockk 运行 JUnit 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68872301/
将 AndroidStudio 更新为 4.2 后我在可调试过程中看不到我的应用程序。更新前一切正常。我尝试但没有任何改变的是: - 重启我的手机 - 重启安卓工作室 - 重启电脑 - 使缓存无效 -
我最近安装了 Android Studio Arctic Fox v2020.3.1 Beta 2 以便能够使用 Jetpack Compose在我们的项目中,因为我无法在 AS 4.2.1 上这样做
无法加载类“org.gradle.api.publication.maven.internal.MavenPomMetaInfoProvider”。 应用插件:'com.github.dcendent
我刚刚在 Mac 上将 Android Studio 升级到了最新的稳定版本(Arctic Fox 2020.3.1),现在我的项目没有构建。我在 IDE 顶部栏中收到“未配置 Kotlin”,在构建
今天刚注意到Arctic Fox 更新了Beta 4。之前没有问题,我决定升级我的Beta 3。与往常一样,AGP 也需要升级。在我尝试使用新的 Gradle n AGP 构建项目之前,新的 Beta
今天我将我的 Android Studio 更新到最新的稳定版本 Android Studio Arctic Fox | 2020.3.1 补丁 4每当打开 xml 时,即使旧项目或新项目和某些属性在
我正在尝试使用带有 BasicActivity 模板的新项目向导在 Android Studio Canary 14 上创建一个新项目(Test8),但我遇到了构建错误。 这是错误日志 Setting
我正在尝试使用 Android Studio Arctic Fox (2020.3.1) Beta 3 构建一个 Jetpack Compose 项目,构建失败并出现以下错误。 Unable to f
刚刚更新到 Mac 上的 Android Studio Arctic Fox,在修复和更新了所有 Gradle 设置以使其与 Gradle 7.0 以及这个新版本要求我做的任何事情之后,我现在在构建我
无法将 Android Studio 4.1.2 更新到 Android Studio 2020.3.1 北极狐 任何人都可以帮助我吗? 最佳答案 我通过简单地从 Android Studio web
我面临一个奇怪的问题。在我更新我的 Android Studio 之前,flutter doctor 一切正常。一旦我更新了 Android Studio,当我运行医生时,它会显示“无法找到 bund
我是一名优秀的程序员,十分优秀!