默认情况下,TestNG 禁用从不安全的 Urls 加载 DTD

新手上路,请多包涵

我正在使用 testng maven 和 selenium 来运行我的测试,目前我有以下 testng.xml 文件

看起来问题出在 &listeners 和 &classes 行上,如果我将这些行替换为我在引用文件中拥有的 xml 内容,它运行良好。我在以前的项目中使用过它并且工作正常,不确定为什么会出现此错误。

 <?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"   [
        <!ENTITY listeners SYSTEM "listeners.xml">
        <!ENTITY classes SYSTEM "classes.xml">
        ]>
<suite name="Local Execution" verbose="5">
    &listeners;
    <test name="Core Integration Tests" time-out="800000">
        <groups>
            <run>
                <include name="failed"/>
            </run>
        </groups>
        &classes;
    </test>
</suite>

Listener.xml 内容就像

<listeners>
    <listener class-name="com.myclass.Listeners.TestListener"/>
</listeners>

类文件是

<classes>
    <class name="com.orders.tc_class1"/>
    <class name="com.orders.tc_class2"/>
</classes>

这是我得到的错误的一部分

org.testng.TestNGException:
TestNG by default disables loading DTD from unsecure Urls. If you need to explicitly load the DTD from a http url, please do so by using the JVM argument [-Dtestng.dtd.http=true]
    at org.testng.xml.TestNGContentHandler.resolveEntity(TestNGContentHandler.java:102)

原文由 msiles 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 688
2 个回答

是的,这是 TestNG 的默认行为,我通过拉取请求引入它来修复错误 https://github.com/cbeust/testng/issues/2022

要在 intelliJ 中设置 JVM 参数,请选择 Run > Edit Configurations ,并在 -ea 之后的 VM 选项部分中添加此 JVM 参数(默认情况下会存在。

有关编辑配置的更多信息,请参阅 此处 的官方文档

添加了屏幕截图以便于在 Intellij 中查找

参数值

-ea -Dtestng.dtd.http=true

在此处输入图像描述

如果以上在模板级别不起作用,这将修复它,这是

Run--> Edit configuration --> template --> testng

在此处输入图像描述

原文由 Krishnan Mahadevan 发布,翻译遵循 CC BY-SA 4.0 许可协议

改变你的一切

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

在 https:

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

原文由 Amerousful 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题