【发布时间】:2019-12-20 19:38:38
【问题描述】:
每次我尝试调试我的一项测试(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)
我在这里做了很多搜索,发现有几个人有类似的问题。他们中的大多数只是通过升级来解决(到 2013 年或其他什么,这些问题并不完全是春鸡)。其余的需要一些与他们的系统相关的特殊调味料(主要是安卓的东西)。或者他们遇到了不同的异常(断开连接,我一开始就无法连接)。
这些测试(大部分是单元测试)附加到一个没有“main”的模块。
我尝试启动gradlew -DtestDebug.test=true cleanTest test,然后连接远程调试会话。我收到一个错误:Unable to open debugger port (localhost:5005); java.net.ConnectException "Connection refused: connect",我相信这正是 IntelliJ 的 gui 在收到上述异常时所显示的内容。
理想情况下,我想设置断点,调试启动我的测试任务(也许指定一个类或个人@Test),然后它就可以工作了。
有没有人有我可以尝试的其他想法?我可以查看的日志?
【问题讨论】:
-
youtrack.jetbrains.com/issue/IDEA-228415 可能相关,如果存在 Android 模块,则调试测试存在已知问题。
-
IntelliJ 默认使用 Gradle 来运行/调试测试。您可以尝试更改为使用 IntelliJ 自己的测试运行器。它可以在项目的 Gradle 设置中更改。
-
@johanneslink :我遇到了同样的问题,我按照你说的做了,现在可以了!谢谢!这对其他人可能有用。您可能会考虑将您的建议作为答案,因为它至少对我有用。
标签: java gradle intellij-idea junit5