TestNG的testng.xml文件DOCTYPE声明引发格式错误如何修复?
修复TestNG XML中DOCTYPE声明导致的“文档类型声明包含或指向的标记声明必须格式良好”错误
这个报错的核心原因是XML解析器无法正常加载或验证指定的TestNG DTD文件,常见情况包括远程DTD地址无法访问、本地环境无法解析外部资源,或者DTD文件本身加载异常。以下是几种可行的修复方案:
方案一:使用本地DTD文件(推荐)
- 从项目依赖的TestNG包(testng.jar)中提取根目录下的
testng-1.0.dtd文件。 - 将该文件放到项目的资源目录中,比如
src/test/resources。 - 修改testng.xml中的DOCTYPE声明,指向本地资源:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "classpath:testng-1.0.dtd"> <suite name="Suite"> <test name="Test"> <classes> <class name="upskill.runners.RunnerClass"/> </classes> </test> <!-- Test --> </suite> <!-- Suite -->
方案二:移除DOCTYPE声明(临时快速修复)
直接删除<DOCTYPE>行即可消除报错,因为TestNG在没有DTD声明时会采用内部默认规则解析XML,无需强制校验文档结构。但这种方式会失去XML结构的合法性校验能力,适合临时应急场景。
方案三:调整远程DTD地址(若需保留远程引用)
如果必须使用远程DTD,可尝试以下操作:
- 确认本地网络能正常访问TestNG的DTD地址,排除代理、防火墙拦截问题。
- 将HTTP地址替换为HTTPS版本,部分环境下HTTPS连接更稳定:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
内容的提问来源于stack exchange,提问作者Mohammad Bhuiyan
相关产品推荐
相关产品推荐

