单元测试在运行时正常工作,但在 Android Studio 4.1 中调试时不工作

Cru*_*ces 15 android unit-testing

我升级了 android studio,我得到了这种奇怪的行为

当我运行我的单元测试时,它们会正确运行并完成(我引入了一些错误以确保确实如此)

但是当我在 java 中放置断点并使用调试测试时,jvm 会因以下错误而崩溃:

"C:\Program Files\Android\Android Studio4\jre\bin\java.exe" - agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64493,suspend=y,server=n -ea -javaagent:C:\Users\imavrelos\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlinx\kotlinx-coroutines-core-jvm\1.3.9\4be434f5e86c1998a273e7f19a7286440894f0b0\kotlinx-coroutines-core-jvm-1.3.9.jar -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\imavrelos\AppData\Local\Google\AndroidStudio4.1\groovyHotSwap\gragent.jar -javaagent:C:\Users\imavrelos\AppData\Local\Google\AndroidStudio4.1\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Android\Android Studio4\lib\idea_rt.jar" com.intellij.rt.execution.CommandLineWrapper C:\Users\imavrelos\AppData\Local\Temp\idea_classpath1657759720 com.intellij.rt.junit.JUnitStarter -ideVersion5 @w@C:\Users\imavrelos\AppData\Local\Temp\idea_working_dirs_junit.tmp @C:\Users\imavrelos\AppData\Local\Temp\idea_junit.tmp -socket64492
Connected to the target VM, address: '127.0.0.1:64493', transport: 'socket'
java.lang.NoClassDefFoundError: kotlin/collections/AbstractMutableMap
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
    at kotlinx.coroutines.debug.internal.DebugProbesImpl.<clinit>(DebugProbesImpl.kt:30)
    at kotlinx.coroutines.debug.AgentPremain.<clinit>(AgentPremain.kt:26)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.ClassNotFoundException: kotlin.collections.AbstractMutableMap
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
    ... 20 more
FATAL ERROR in native method: processing of -javaagent failed
Disconnected from the target VM, address: '127.0.0.1:64493', transport: 'socket'

Process finished with exit code 1
Exception in thread "main" 
Run Code Online (Sandbox Code Playgroud)

有没有人遇到这个错误?关于如何修复它的任何建议?

小智 27

我通过编辑当前的运行/调试配置并在缩短命令行选项中选择 JAR 清单来修复它。


mir*_*ula 5

我通过编辑当前的运行/调试配置并禁用“缩短命令行”选项来修复此错误。在将其设置为“类路径文件”之前,在某些情况下似乎会出现上述错误。

在此处输入图片说明


小智 5

使用kotlinx-coroutines-core也可能导致类似的错误,但它似乎取决于 IDEA 版本或库。

就我而言,将 IDEA Ultimate 更新到版本 2021.2 后,调试停止工作

  • 在此处找到一个临时解决方法:https://youtrack.jetbrains.com/issue/KTIJ-15750 构建、执行、部署 -&gt; 调试器 -&gt; 数据视图 -&gt; Kotlin -&gt; 检查禁用协程代理 (3认同)