Eclipse运行TestNG.xml报org.testng.TestNGException如何解决
Eclipse运行TestNG.xml抛出
org.testng.TestNGException解决方案 根因说明
堆栈关键报错org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog代表XML解析失败:解析器在文件头部声明区域读到了非法字符。
该问题仅在Eclipse复现、IntelliJ可正常运行、两份内容肉眼看几乎一致的xml一份可运行一份报错,核心原因是IntelliJ内置XML解析器对头部非法字符做了容错处理,而Eclipse TestNG插件调用的JDK原生SAXParser校验规则严格,肉眼不可见的特殊字符也会直接触发解析失败。
解决步骤
- 移除文件UTF-8 BOM头
这是该场景最高发诱因:异常的testng.xml被存为带BOM的UTF-8格式,文件开头会追加3个不可见的字节标识。处理方式:用纯文本编辑器打开该xml,另存为无BOM的UTF-8格式覆盖原文件;也可在Eclipse中右键文件选择Properties,将Text file encoding修改为UTF-8,将光标移到文件第一行最起始位置,连续按删除键清除肉眼不可见的字符后保存。 - 校验XML头部格式
确保文件第一行第一列位置没有多余空格、空行、特殊控制符,合法的TestNG.xml头部不要在XML声明前加任何内容,参考格式如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="TestSuite" parallel="false"> <!-- 测试配置、用例声明 --> </suite>
- 清理Eclipse缓存
右键对应项目选择Refresh刷新文件列表,之后点击顶部菜单栏Project->Clean,选中异常项目清理编译缓存,避免Eclipse读取到旧的异常文件快照。 - 修复插件兼容问题
若以上操作均无效,打开Eclipse Marketplace将TestNG插件升级到最新稳定版,排除旧版本插件自带的XML解析逻辑bug。
内容的提问来源于stack exchange,提问作者cagoscra
相关产品推荐
相关产品推荐

