You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ IDEA CE单独运行TestNG测试报Connection reset错误求助

问题描述

项目通过mvn clean install能正常运行单元测试,但在IntelliJ IDEA 2023.1(社区版)中点击@Test注解旁的箭头单独运行时,抛出org.testng.TestNGException: java.net.SocketException: Connection reset错误。

本地环境:

  • MacOS Ventura 13.3
  • zulu-8 jdk(1.8.0_362)macos-aarch64
  • TestNG 6.14.3

完整堆栈信息:

org.testng.TestNGException: java.net.SocketException: Connection reset
at org.testng.TestNG.parseSuite(TestNG.java:327)
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:348)
at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:39)
at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476)
at sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470)
at sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:110)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1423)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1329)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:444)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:415)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:197)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1577)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1505)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:268)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1305)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1271)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:264)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1160)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1044)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:958)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:504)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:642)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:326)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
at org.testng.xml.XMLParser.parse(XMLParser.java:38)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:16)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:9)
at org.testng.xml.Parser.parse(Parser.java:152)
at org.testng.xml.Parser.parse(Parser.java:233)
at org.testng.TestNG.parseSuite(TestNG.java:295)
... 3 more

Process finished with exit code 255
解决思路

从堆栈信息分析,问题根源是TestNG解析XML配置时尝试发起HTTPS连接加载外部资源失败,以下是具体排查和解决步骤:

  • 禁用TestNG外部DTD网络加载
    在IDEA的TestNG运行配置中添加JVM参数:-Dtestng.dtd.http=false,强制TestNG使用本地内置的DTD文件,避免从网络获取资源。设置路径:点击运行配置下拉框 → Edit Configurations → 找到对应TestNG配置 → 在VM options中添加该参数。

  • 核对IDEA与项目的TestNG版本一致性
    确认IDEA中配置的TestNG版本和项目依赖的6.14.3完全匹配。检查路径:File → Settings → Build, Execution, Deployment → Build Tools → Maven → Runner,或在TestNG运行配置的"TestNG library"选项中选择项目依赖的版本。

  • 清理IDEA缓存并重启
    缓存损坏可能导致异常运行问题,执行:File → Invalidate Caches... → 选择"Invalidate and Restart",等待IDEA重启后再尝试运行测试。

  • 排查JDK与SSL兼容性问题
    zulu-8的aarch64版本在部分MacOS环境下可能存在SSL证书兼容性问题,可尝试:

    1. 更新Zulu 8到最新可用版本(如1.8.0_402及以上);
    2. 切换到x86_64架构的Zulu 8 JDK(通过Rosetta运行),验证是否解决连接问题。
  • 检查网络代理设置
    确认IDEA是否开启了HTTP代理,而Maven未使用代理导致环境差异。检查路径:File → Settings → Appearance & Behavior → System Settings → HTTP Proxy,若开启代理,可关闭代理或确保代理能正常访问TestNG的DTD地址。

  • 修改TestNG XML配置
    如果项目中有testng.xml文件,检查是否引用了外部DTD:

    1. 移除<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">声明,TestNG可自动识别XML结构;
    2. 或将DTD路径替换为本地文件路径,避免网络请求。

内容的提问来源于stack exchange,提问作者give_it_a_bit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:13:14