默认情况下,TestNG 禁用从不安全的 Urls 加载 DTD
TestNG by default disables loading DTD from unsecure Urls
我正在使用 testng maven 和 selenium 运行 我的测试,目前我有以下 testng.xml 文件
看起来问题出在 &listeners 和 &类 行,如果我用引用文件中的 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)
是的,这是 TestNG 的默认行为,我通过拉取请求引入它来修复错误 https://github.com/cbeust/testng/issues/2022
要在 intelliJ 中设置 JVM 参数,请选择 Run > Edit Configurations
,然后在 -ea
之后的 VM 选项部分添加此 JVM 参数(默认情况下会在那里。
更多编辑配置请参考官方文档here
添加了屏幕截图以便于在 Intellij 中查找
参数值
-ea -Dtestng.dtd.http=true
如果以上在模板级别不起作用,这将解决它,即
Run--> Edit configuration --> template --> testng
- 右击class,select运行-->运行配置
- 默认情况下,将在 testng 选项
下生成一个具有相同 class 名称的 testNg class
- Select class 并转到“参数”选项卡
- 在 VM 参数中提供 -Dtestng.dtd.http=true
就是这样。
只是为了避免混淆并让刚接触 Config 编辑选项等的人更容易附加一个 snap 以在 intellij 中完成它。
正如 Krishnan M. 先生所回答的那样:
转到 Cucumber TestNG运行ner class 的编辑配置,然后我们必须向 VM 选项添加另一个参数,如下所示-
如何编辑 运行 配置
如何添加 >VM 参数:“-Dtestng.dtd.http=true”
我最近遇到这个错误,尝试了上面给出的解决方案,但仍然出现错误。
设置 JVM 参数无论如何都是解决这个问题的方法,如上面的答案所示,但我又添加了一个步骤,它解决了我的问题。
我更改了 TestNG 配置中的参数,如下所示(添加的步骤):
我也更改了LoginTests.testSuccessfullLogin中的参数。 (这一步只会
如果您有 运行 有问题的程序,则有必要。否则如果你 运行ning
该程序是第一次,它将使用相同的方式创建此配置
与 TestNG 配置中一样的参数。)
我还注意到,如果您还没有完成上面提到的第二步,它将使用更改后的参数创建一个名为 LoginTests.testSuccessfullLogin(1) 的新配置,以便 运行 测试.
另一个选项,如果希望它适用于所有测试,无论您 运行 它们来自何处,请通过设置系统 属性 在 pom 中设置该选项。为 maven-surefire-plugin
和 maven-failsafe-plugin
添加以下内容
<configuration>
<systemPropertyVariables>
<testng.dtd.http>true</testng.dtd.http>
</systemPropertyVariables>
</configuration>
要仅从 IntelliJ 为所有测试 运行 修复此问题,可以使用 -Dtestng.dtd.http=true
vm 选项更新 TestNG 模板。将需要删除现有的测试 运行s 或手动添加 vm 选项(我只是删除它们)。模板更改后的所有测试 运行 都将具有提到的 vm 选项。
Run/Debug Configurations
-> Edit Configurations
-> Templates
-> TestNG
请按照以下所有步骤操作。在 Eclipse 中配置 JVM 参数后完美运行。
问题陈述:
默认情况下,TestNG 禁用从不安全的 Urls 加载 DTD
如果您需要从 http url 显式加载 DTD,请使用 JVM 参数 [-Dtestng.dtd.http=true]
通常我们需要在启动规则项目的 JVM 上使用某些 VM 参数。
为此,需要执行以下 2 个步骤:
• 使用默认 JVM 参数定义新安装的 JRE:
-- 转到 Eclipse Window > 首选项 > Java > 已安装的 JRE”。
-- Select 默认 JRE 并单击复制。
-- 根据您的选择更改 JRE 名称,例如 myJRE 并输入默认 VM 参数作为
“-Dtestng.dtd.http=真”
enter image description here
-- 点击完成。
--- 取消选中默认 JRE 并选中添加了 VM 参数的新 JRE。
--- 点击应用,应用并关闭。
• 配置规则项目启动配置以使用新安装的 JRE:
-- 转到 运行 > 运行 配置
--- 运行 正在查看配置对话框。
enter image description here
--- 输入您选择的名称,例如:运行ConfigWithJVMArgs。
--- 测试标签:
默认显示项目名称。
Select“套件”选项并浏览项目文件夹中的testng.xml 文件。例如:src/main/resources/testng.xml
enter image description here
--- 参数选项卡:
在 VM arguments 文本字段中输入“-Dtestng.dtd.http=true”。
--- JRE 选项卡:
Select “Alternate JRE :” 作为新添加的带有 JVM 参数的 JRE。
--- 不需要其他改变。
--- 单击应用,然后单击 运行。
如果套件在 Eclipse 中启动并 运行s 成功,那么当您 运行 打包的 JAR 文件时它也可以工作。
注意:在Eclipse中更改以上配置后执行mvn clean和mvn package –Dmaven.test.skip=true
一旦 JAR 准备就绪,它将使用 JVM 参数配置新的 JRE,并修复问题陈述。
添加这些 VM 选项:-ea -Dtestng.dtd.http=true
解决了这个问题。
但是如果你想为每个 运行 或任何 class 或方法解决它,你需要在 TestNG 模板中添加相同的内容,请参考此屏幕截图。
Intelij TestNg Template SS
详情异常如下:-
org.testng.TestNGException:
默认情况下,TestNG 禁用从不安全的 Urls 加载 DTD。如果您需要从 http url 显式加载 DTD,请使用 JVM 参数 [-Dtestng.dtd.http=true]
要修复异常,需要设置 JVM 参数。在 Eclipse 中设置 JVM 参数:
- 打开 Eclipse 并转到 Window -> 首选项
- 在left-hand边展开TestNG,然后点击Run/Debug
- 在 right-hand 端:在 JVM args 文本字段中键入以下文本:
-Dtestng.dtd.http=真
- 单击应用并关闭按钮
全部换掉
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"
在 https:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"
将套件文件中的“http://testng.org/testng-1.0.dtd”更改为“https://testng.org/testng-1.0.dtd”。
在 TestNG 文件中,将 参数内的值 (http) 更改为 https,如下图突出显示。就是这样。
要在 Eclipse 中解决这个问题,请按照以下步骤操作:
- 转到 windows -> 首选项->TestNG->Run/Debug
- 在JVM_args中添加以下-Dtestng.dtd.http=true
- 单击“应用并关闭”按钮。
- 右键单击您的项目select Maven -> 更新项目
- 现在转到您的 pom.xml 并单击 运行 as ->Maven Test
下面的问题“默认情况下 TestNG 禁用从不安全的 Urls 加载 DTD”将不存在。
- 如果您 运行 您的项目仅来自 eclipse/other IDE,请更新您的 TestNG 首选项并在 JVM_args 中添加语句
-Dtestng.dtd.http=true
。
- 如果您正在寻找一个通用的修复程序,您也可以从 CLI 运行 maven 然后更新所有 TestNG.xml 文件
来自
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
收件人:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
我个人更喜欢更新 DOCTYPE。
我也遇到过这个问题。
我无法通过右键单击 运行 从我的 xml 文件中 运行 进行测试。因此,我所做的解决方案是将 xml 文件中的“”更改为“https://...”
它解决了这个问题。
谢谢
我正在使用 testng maven 和 selenium 运行 我的测试,目前我有以下 testng.xml 文件
看起来问题出在 &listeners 和 &类 行,如果我用引用文件中的 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)
是的,这是 TestNG 的默认行为,我通过拉取请求引入它来修复错误 https://github.com/cbeust/testng/issues/2022
要在 intelliJ 中设置 JVM 参数,请选择 Run > Edit Configurations
,然后在 -ea
之后的 VM 选项部分添加此 JVM 参数(默认情况下会在那里。
更多编辑配置请参考官方文档here
添加了屏幕截图以便于在 Intellij 中查找
参数值
-ea -Dtestng.dtd.http=true
如果以上在模板级别不起作用,这将解决它,即
Run--> Edit configuration --> template --> testng
- 右击class,select运行-->运行配置
- 默认情况下,将在 testng 选项 下生成一个具有相同 class 名称的 testNg class
- Select class 并转到“参数”选项卡
- 在 VM 参数中提供 -Dtestng.dtd.http=true
就是这样。
只是为了避免混淆并让刚接触 Config 编辑选项等的人更容易附加一个 snap 以在 intellij 中完成它。
正如 Krishnan M. 先生所回答的那样: 转到 Cucumber TestNG运行ner class 的编辑配置,然后我们必须向 VM 选项添加另一个参数,如下所示-
如何编辑 运行 配置
如何添加 >VM 参数:“-Dtestng.dtd.http=true”
我最近遇到这个错误,尝试了上面给出的解决方案,但仍然出现错误。 设置 JVM 参数无论如何都是解决这个问题的方法,如上面的答案所示,但我又添加了一个步骤,它解决了我的问题。
我更改了 TestNG 配置中的参数,如下所示(添加的步骤):
我也更改了LoginTests.testSuccessfullLogin中的参数。 (这一步只会 如果您有 运行 有问题的程序,则有必要。否则如果你 运行ning 该程序是第一次,它将使用相同的方式创建此配置 与 TestNG 配置中一样的参数。)
我还注意到,如果您还没有完成上面提到的第二步,它将使用更改后的参数创建一个名为 LoginTests.testSuccessfullLogin(1) 的新配置,以便 运行 测试.
另一个选项,如果希望它适用于所有测试,无论您 运行 它们来自何处,请通过设置系统 属性 在 pom 中设置该选项。为 maven-surefire-plugin
和 maven-failsafe-plugin
<configuration>
<systemPropertyVariables>
<testng.dtd.http>true</testng.dtd.http>
</systemPropertyVariables>
</configuration>
要仅从 IntelliJ 为所有测试 运行 修复此问题,可以使用 -Dtestng.dtd.http=true
vm 选项更新 TestNG 模板。将需要删除现有的测试 运行s 或手动添加 vm 选项(我只是删除它们)。模板更改后的所有测试 运行 都将具有提到的 vm 选项。
Run/Debug Configurations
-> Edit Configurations
-> Templates
-> TestNG
请按照以下所有步骤操作。在 Eclipse 中配置 JVM 参数后完美运行。
问题陈述:
默认情况下,TestNG 禁用从不安全的 Urls 加载 DTD 如果您需要从 http url 显式加载 DTD,请使用 JVM 参数 [-Dtestng.dtd.http=true]
通常我们需要在启动规则项目的 JVM 上使用某些 VM 参数。
为此,需要执行以下 2 个步骤: • 使用默认 JVM 参数定义新安装的 JRE: -- 转到 Eclipse Window > 首选项 > Java > 已安装的 JRE”。 -- Select 默认 JRE 并单击复制。 -- 根据您的选择更改 JRE 名称,例如 myJRE 并输入默认 VM 参数作为 “-Dtestng.dtd.http=真” enter image description here
-- 点击完成。 --- 取消选中默认 JRE 并选中添加了 VM 参数的新 JRE。 --- 点击应用,应用并关闭。
• 配置规则项目启动配置以使用新安装的 JRE: -- 转到 运行 > 运行 配置 --- 运行 正在查看配置对话框。
enter image description here
--- 输入您选择的名称,例如:运行ConfigWithJVMArgs。 --- 测试标签: 默认显示项目名称。 Select“套件”选项并浏览项目文件夹中的testng.xml 文件。例如:src/main/resources/testng.xml enter image description here
--- 参数选项卡: 在 VM arguments 文本字段中输入“-Dtestng.dtd.http=true”。 --- JRE 选项卡: Select “Alternate JRE :” 作为新添加的带有 JVM 参数的 JRE。 --- 不需要其他改变。 --- 单击应用,然后单击 运行。
如果套件在 Eclipse 中启动并 运行s 成功,那么当您 运行 打包的 JAR 文件时它也可以工作。
注意:在Eclipse中更改以上配置后执行mvn clean和mvn package –Dmaven.test.skip=true
一旦 JAR 准备就绪,它将使用 JVM 参数配置新的 JRE,并修复问题陈述。
添加这些 VM 选项:-ea -Dtestng.dtd.http=true
解决了这个问题。
但是如果你想为每个 运行 或任何 class 或方法解决它,你需要在 TestNG 模板中添加相同的内容,请参考此屏幕截图。
Intelij TestNg Template SS
详情异常如下:- org.testng.TestNGException: 默认情况下,TestNG 禁用从不安全的 Urls 加载 DTD。如果您需要从 http url 显式加载 DTD,请使用 JVM 参数 [-Dtestng.dtd.http=true]
要修复异常,需要设置 JVM 参数。在 Eclipse 中设置 JVM 参数:
- 打开 Eclipse 并转到 Window -> 首选项
- 在left-hand边展开TestNG,然后点击Run/Debug
- 在 right-hand 端:在 JVM args 文本字段中键入以下文本: -Dtestng.dtd.http=真
- 单击应用并关闭按钮
全部换掉
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"
在 https:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"
将套件文件中的“http://testng.org/testng-1.0.dtd”更改为“https://testng.org/testng-1.0.dtd”。
在 TestNG 文件中,将 参数内的值 (http) 更改为 https,如下图突出显示。就是这样。
要在 Eclipse 中解决这个问题,请按照以下步骤操作:
- 转到 windows -> 首选项->TestNG->Run/Debug
- 在JVM_args中添加以下-Dtestng.dtd.http=true
- 单击“应用并关闭”按钮。
- 右键单击您的项目select Maven -> 更新项目
- 现在转到您的 pom.xml 并单击 运行 as ->Maven Test
下面的问题“默认情况下 TestNG 禁用从不安全的 Urls 加载 DTD”将不存在。
- 如果您 运行 您的项目仅来自 eclipse/other IDE,请更新您的 TestNG 首选项并在 JVM_args 中添加语句
-Dtestng.dtd.http=true
。 - 如果您正在寻找一个通用的修复程序,您也可以从 CLI 运行 maven 然后更新所有 TestNG.xml 文件
来自
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
收件人:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
我个人更喜欢更新 DOCTYPE。
我也遇到过这个问题。 我无法通过右键单击 运行 从我的 xml 文件中 运行 进行测试。因此,我所做的解决方案是将 xml 文件中的“”更改为“https://...” 它解决了这个问题。 谢谢