TestNG XML 配置文件 DTD“测试”标签错误

问题描述 投票:0回答:8

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

元素类型“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 文件验证是否存在问题。

xml testng dtd
8个回答
18
投票

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

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

8
投票

只需更改第一行如下:

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

删除此行:

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

不会显示错误。


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


1
投票

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

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


0
投票

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


0
投票

删除 DOCTYPE 整行


0
投票

删除上面的行,它在 testng.xml 文件中没有给出任何错误;然而,即使文件包含错误,执行也不会受到阻碍。


-2
投票

如果不起作用,请尝试将文件内容替换为任何其他有效的 testng.xml 文件的内容。这对我的情况有效。

© www.soinside.com 2019 - 2024. All rights reserved.