Testng: [ERROR] TestNG de forma predeterminada deshabilita la carga de DTD desde URL no seguras.

Creado en 9 oct. 2020  ·  10Comentarios  ·  Fuente: cbeust/testng

Versión de TestNG

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.3.0</version>
</dependency>

Comportamiento esperado

Lanzar una excepción después de leer el archivo testng-1.0.dtd del recurso
image

Comportamiento real

El archivo testng-1.0.dtd no se puede leer desde los recursos

¿Es reproducible el problema en el corredor?

IntelliJ v2020.2.3 (complemento TestNG IDE versión 202.7660.26)

Comentario más útil

Correcto, parece un "reemplazar todo" inesperado de https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049

Todos 10 comentarios

Creo que solo necesita agregar argumentos de VM '-Dtestng.dtd.http = true', o usar recursos HTTPS. Actualmente, TestNG necesita HTTPS como predeterminado en los archivos de la suite.

@ kobebryant2007 Hay un error obvio en el código.

  1. No quiero agregar un argumento y no quiero que el archivo testng-1.0.dtd sea ​​tomado por la red.
  2. Si agrega una bandera, entonces, según el código, no tiene sentido para mí colocar el archivo en los recursos.

@juherr Presta atención por favor.

@shaburov -

No quiero agregar un argumento y no quiero que el archivo testng-1.0.dtd sea tomado por la red.

Según tengo entendido, la razón por la que TestNG busca el DTD de la red es para asegurarse de que recupera el DTD más reciente / adecuado. TestNG intentará recuperar el DTD del sitio web de TestNG SÓLO a través del protocolo https y, si no lo encuentra, verá ese error. La única forma de deshabilitar eso es usar ese argumento de JVM que sugirió @ kobebryant2007 .

Si agrega una bandera, entonces, según el código, no tiene sentido para mí colocar el archivo en los recursos.

¿Puede ayudarme a comprender cuál es la razón detrás de esta expectativa de que TestNG esté leyendo un archivo de sus recursos locales? Si se menciona de esa manera en algún lugar, indíqueme la documentación pertinente. Todo dicho y hecho, si hay fallas en la red, TestNG por defecto aborta actualmente. Eso se ha resuelto como parte del PR https://github.com/cbeust/testng/pull/2386 que recurrirá al DTD incrustado dentro del jar de TestNG. Supongo que una vez que el PR se fusiona, puede terminar haciendo su archivo testng dtd en su CLASSPATH que se puede recuperar como un recurso.

@shaburov ¿Qué estás intentando hacer?

El jar de TestNG ya incluye el DTD y es el que se supone que debe usarse.

@juherr Mira el código que adjunto a la captura de pantalla y
Se lanzará una excepción antes de que el archivo se lea de los recursos.

Creo que el problema es que IntelliJ no está usando HTTPS:
image

O que la URL no HTTPS no está en la lista URLS (tenga en cuenta que TESTNG_DTD_URL y HTTPS_TESTNG_DTD_URL son exactamente iguales).
image

@algotastic el segundo, creo.

@shaburov tiene razón, esto es un error:
https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L33
Debería ser public static final String TESTNG_DTD_URL = "http://testng.org/" + TESTNG_DTD;

Y esto https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L28
debe ser public static final String OLD_TESTNG_DTD_URL = "http://beust.com/testng/" + TESTNG_DTD;

Correcto, parece un "reemplazar todo" inesperado de https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049

Estoy bien para agregar '-Dtestng.dtd.http = true', pero esto hace que sea imposible ejecutar la prueba de una clase / método en IntelliJ (clic derecho y ejecutar) sin conexión.

¿Fue útil esta página
0 / 5 - 0 calificaciones