<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.3.0</version>
</dependency>
Lançar exceção após ler o arquivo testng-1.0.dtd do recurso
O arquivo testng-1.0.dtd não é legível de recursos
IntelliJ v2020.2.3 (plug-in TestNG IDE versão 202.7660.26)
Acho que você só precisa adicionar argumentos de VM '-Dtestng.dtd.http = true' ou usar recursos HTTPS. Atualmente, TestNG precisa de HTTPS como padrão nos arquivos do pacote.
@ kobebryant2007 Existe um bug óbvio no código.
testng-1.0.dtd
seja levado pela rede.@juherr Preste atenção, por favor.
@shaburov -
Não quero adicionar um argumento e não quero que o arquivo testng-1.0.dtd seja levado pela rede.
Com base no meu entendimento, o motivo pelo qual o TestNG procura o DTD na rede é para garantir que ele recupere o DTD mais recente / adequado. O TestNG tentará recuperar o DTD do site TestNG SOMENTE pelo protocolo https e, se não for encontrado, você verá esse erro. A única maneira de desabilitar isso é usar o argumento JVM que @ kobebryant2007 sugeriu.
Se você adicionar um sinalizador, com base no código, não faz sentido para mim colocar o arquivo nos recursos.
Você pode me ajudar a entender qual é a razão por trás dessa expectativa de que o TestNG seja ler um arquivo de seus recursos locais? Se for mencionado dessa forma em algum lugar, indique-me a documentação relevante. Tudo dito e feito, se houver falhas de rede, o TestNG por padrão aborta atualmente. Isso foi resolvido como parte do PR https://github.com/cbeust/testng/pull/2386, que voltará ao DTD embutido no jar TestNG. Eu estou supondo que, uma vez que o PR é mesclado, você pode acabar criando seu arquivo dtd de teste em seu CLASSPATH, que pode ser obtido como um recurso.
@shaburov O que você está tentando fazer?
O jar TestNG já está incluindo o DTD e é o que deveria ser usado.
@juherr Veja o código que anexei à captura de tela e perceba que não é esse o caso.
Uma exceção será lançada antes que o arquivo seja lido dos recursos.
Acredito que o problema seja que o IntelliJ não está usando HTTPS:
Ou que o URL não HTTPS não está na lista URLS
(observe que TESTNG_DTD_URL
e HTTPS_TESTNG_DTD_URL
são exatamente os mesmos).
@algotastic o segundo, eu acredito.
@shaburov está certo, isso é um bug:
https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L33
Deve ser public static final String TESTNG_DTD_URL = "http://testng.org/" + TESTNG_DTD;
E este https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L28
deve ser public static final String OLD_TESTNG_DTD_URL = "http://beust.com/testng/" + TESTNG_DTD;
Certo, parece um "substituir tudo" inesperado de https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049
Posso adicionar '-Dtestng.dtd.http = true', mas isso torna impossível executar o teste de uma classe / método no IntelliJ (clique com o botão direito e execute) offline.
Fechado via https://github.com/cbeust/testng/pull/2409
Comentários muito úteis
Certo, parece um "substituir tudo" inesperado de https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049