2

当 Eclipse 尝试根据其 DTD 验证 XML 时,我总是在 TestNG XML 配置文件中的测试标记(在行test name="Bing-Search-Sample...)收到此错误。该文件工作正常,似乎没有问题:

元素类型“test”的内容必须匹配“(method-selectors?,parameter*,groups?,packages?,classes?)”。

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 文件验证是否存在问题。

4

6 回答 6

16

显然元素的顺序很重要。首先是参数,然后是组,类应该是测试元素中的最后一个元素。这是配置文件的正确格式:

<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>
于 2012-12-15T00:08:27.153 回答
8

只需将第一行更改为以下内容:

<?xml version="1.0" encoding="UTF-8"?>

删除此行:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

它不会显示错误。

于 2016-10-12T19:02:43.243 回答
2

只需替换以下行:

<?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"> 

它对我有用。

参考:https ://www.experts-exchange.com/questions/23176057/web-xml-Element-type-listener-must-be-declared.html

于 2019-06-17T09:52:36.080 回答
1

验证的一个常见用途是确保软件知道从输入中期望什么,从而保证每个有效文档都将得到正确处理。并不总是保证每个无效文档都会引发错误——有时(如这里)某些消费软件实际上可以处理一些无效的文档。

您问软件正确处理您的输入这一事实是否意味着 DTD 有问题。不一定:定义严格的排序通常比允许所有可能的排序变化更容易,特别是当元素的顺序不能传达信息时。

于 2012-12-15T00:51:02.700 回答
0

此外,检查您的 testng.xml 格式是否正确,即其中没有不需要的字符。就我而言,我错误地将两个右括号放在一起并尝试执行 testng.xml。它抛出相同的错误。

于 2018-08-03T06:48:15.053 回答
-2

如果没有任何效果,请尝试将文件的内容替换为任何其他有效的 testng.xml 文件的内容。这在我的情况下有效。

于 2016-10-17T17:49:56.570 回答