<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.3.0</version>
</dependency>
Werfen Ausnahme nach der testng-1.0.dtd Datei aus Ressource lesen
Die Datei testng-1.0.dtd kann von Ressourcen nicht gelesen werden
IntelliJ v2020.2.3 (TestNG IDE-Plugin Ver. 202.7660.26)
Ich denke, Sie müssen nur die VM-Argumente '-Dtestng.dtd.http=true' hinzufügen oder HTTPS-Ressourcen verwenden. Derzeit benötigt TestNG HTTPS als Standard in Suite-Dateien.
@kobebryant2007 Der Code enthält einen offensichtlichen Fehler.
testng-1.0.dtd
über das Netzwerk übernommen wird.@juherr Bitte
@shaburov -
Ich möchte kein Argument hinzufügen und ich möchte nicht, dass die Datei testng-1.0.dtd über das Netzwerk übernommen wird.
Nach meinem Verständnis sucht TestNG nach der DTD aus dem Netzwerk, um sicherzustellen, dass es die neueste/richtige DTD abruft. TestNG wird versuchen, die DTD NUR über das https-Protokoll von der TestNG-Website abzurufen, und wenn sie nicht gefunden wird, wird dieser Fehler angezeigt. Die einzige Möglichkeit, dies zu deaktivieren, besteht darin, das von @kobebryant2007 vorgeschlagene JVM-Argument zu verwenden.
Wenn Sie ein Flag hinzufügen, macht es aufgrund des Codes für mich keinen Sinn, die Datei in die Ressourcen zu stellen.
Können Sie mir helfen zu verstehen, was der Grund für diese Erwartung ist, dass TestNG eine Datei aus Ihren lokalen Ressourcen liest? Wenn es irgendwo so erwähnt wird, verweisen Sie mich bitte auf die entsprechende Dokumentation. Alles gesagt und getan, wenn es Netzwerkstörungen gibt, bricht TestNG derzeit standardmäßig ab. Das wurde im Rahmen der PR https://github.com/cbeust/testng/pull/2386 aussortiert, die auf die im TestNG-Glas eingebettete DTD zurückgreifen. Ich vermute, dass Sie, sobald der PR zusammengeführt wird, Ihre testng-dtd-Datei in Ihrem CLASSPATH erstellen können, die als Ressource abgerufen werden kann.
@shaburov Was versuchst du zu tun?
Das TestNG-Jar enthält bereits die DTD und es ist diejenige, die verwendet werden soll.
@juherr Schauen Sie sich den Code an, den ich dem Screenshot beigefügt habe, und stellen Sie fest, dass dies nicht der Fall ist.
Eine Ausnahme wird ausgelöst, bevor die Datei aus den Ressourcen gelesen wird.
Ich glaube, das Problem ist entweder, dass IntelliJ kein HTTPS verwendet:
Oder dass sich die Nicht-HTTPS-URL nicht in der URLS
Liste befindet (beachten Sie, dass TESTNG_DTD_URL
und HTTPS_TESTNG_DTD_URL
genau gleich sind).
@algotastic der zweite, glaube ich.
@shaburov hat recht, das ist ein Fehler:
https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L33
Es sollte public static final String TESTNG_DTD_URL = "http://testng.org/" + TESTNG_DTD;
Und das https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L28
sollte public static final String OLD_TESTNG_DTD_URL = "http://beust.com/testng/" + TESTNG_DTD;
Richtig, es sieht aus wie ein unerwartetes "Alles ersetzen" von https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049
Ich kann '-Dtestng.dtd.http=true' hinzufügen, aber dies macht es unmöglich, eine Klasse/Methode in IntelliJ (Rechtsklick und Ausführung) offline auszuführen.
Geschlossen über https://github.com/cbeust/testng/pull/2409
Hilfreichster Kommentar
Richtig, es sieht aus wie ein unerwartetes "Alles ersetzen" von https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049