IntelliJ 2019.2.2:无法调试 gradle 单元测试

IntelliJ 2019.2.2: Unable to debug gradle unit tests

每次我尝试调试我的一个测试(junit 5)时,我都会遇到异常:

2019-12-20 10:40:53,776 [4972237]   WARN - .ExternalSystemTaskDebugRunner - Interrupted function call: accept failed
java.net.SocketException: Interrupted function call: accept failed
        at java.base/java.net.PlainSocketImpl.accept0(Native Method)
        at java.base/java.net.PlainSocketImpl.socketAccept(PlainSocketImpl.java:159)
        at java.base/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
        at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:551)
        at java.base/java.net.ServerSocket.accept(ServerSocket.java:519)
        at com.intellij.openapi.externalSystem.service.execution.ForkedDebuggerThread.run(ForkedDebuggerThread.java:103)

我在这里对 SO 进行了大量搜索,发现有几个人遇到了类似的问题。他们中的大多数只是通过升级来解决(到 2013 年或其他什么,这些问题并不完全 spring 鸡)。其余的需要一些与他们的系统相关的特殊调味料(主要是 android 东西)。或者他们遇到了不同的异常(断开连接,而我一开始就无法连接)。

这些测试(大部分是单元测试)附加到没有 "main".

模块

我试过启动 gradlew -DtestDebug.test=true cleanTest test,然后连接远程调试会话。我收到一个错误:Unable to open debugger port (localhost:5005); java.net.ConnectException "Connection refused: connect",我相信这正是 IntelliJ 的 gui 在收到上述异常时显示的内容。

理想情况下,我想设置我的断点,调试启动我的测试任务(可能指定一个 class 或单独的 @Test),它就可以工作。

有没有人有任何其他我可以尝试的想法?我可以查看的日志?

解决方法是 switch the build/run actions to IntelliJ IDEA 而不是使用 Gradle。

但是,如果您在当前 IDE 版本中仍然遇到此问题,请 consider reporting it with the sample project 并附上日志(帮助 | 压缩日志并显示在 ...)。