我总是在TestNG XML配置文件中的 test 标记(在测试名称=“Bing-Search-Sample ...”中出现此错误,当时eclipse正在尝试根据其DTD验证XML。该文件工作正常,似乎没有问题:
元素类型“test”的内容必须匹配 “(方法 - 选择?,参数*,组?,包?,类?)”。
XML文件:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="tests" allow-return-values="true"
verbose="10">
<test name="Bing-Search-Sample-Test">
<classes>
<class name="package.TestFactory" />
</classes>
<groups>
<run>
<include name="sample-tests" />
</run>
</groups>
<parameter name="testInterfaceXML" value="SearchInterface.xml"></parameter>
<parameter name="testSuiteXML" value="SearchTest.xml"></parameter>
</test>
</suite>
由于XML工作正常,我想知道TestNG DTD是否存在问题,或者是否在eclipse的XML文件验证中存在问题。
答案 0 :(得分:9)
显然元素的顺序很重要。首先是参数,然后是组,类应该是test元素中的最后一个元素。这是配置文件的正确格式:
<suite name="tests" allow-return-values="true"
verbose="10">
<test name="Bing-Search-Sample-Test">
<parameter name="testInterfaceXML" value="SearchInterface.xml"></parameter>
<parameter name="testSuiteXML" value="SearchTest.xml"></parameter>
<groups>
<run>
<include name="sample-tests" />
</run>
</groups>
<classes>
<class name="package.TestFactory" />
</classes>
</test>
</suite>
答案 1 :(得分:6)
只需更改第一行:
<?xml version="1.0" encoding="UTF-8"?>
删除此行:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
它不会显示错误。
答案 2 :(得分:1)
验证的一个常见用途是确保软件知道输入的内容,以确保每个有效的文档都能得到正确处理。并不总是保证每个无效文档都会引发错误 - 有时(如此处)某些消费软件实际上可以处理一些无效的文档。
您询问软件是否正确处理您的输入这一事实意味着DTD存在问题。不一定:定义严格的排序通常比允许排序中所有可能的变化更容易,特别是当元素的顺序不传达信息时。
答案 3 :(得分:1)
只需替换以下几行:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
使用:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-2.4.dtd">
对我有用。
答案 4 :(得分:0)
还要检查您的testng.xml格式是否正确,即其中没有多余的字符。就我而言,我错误地将两个右括号放在一起,并尝试执行testng.xml。它会引发相同的错误。
答案 5 :(得分:-2)
如果无效,请尝试使用任何其他有效testng.xml文件的内容替换文件内容。这适用于我的情况。