<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.3.0</version>
</dependency>
Выбрасывать исключение после чтения файла testng-1.0.dtd из ресурса
Файл testng-1.0.dtd не читается из ресурсов
IntelliJ v2020.2.3 (плагин TestNG IDE версии 202.7660.26)
Я думаю, вам просто нужно добавить аргументы виртуальной машины -Dtestng.dtd.http = true или использовать ресурсы HTTPS. В настоящее время TestNG требует HTTPS по умолчанию в файлах набора.
@ kobebryant2007 В
testng-1.0.dtd
передавался по сети.@juherr Обратите внимание, пожалуйста.
@shaburov -
Я не хочу добавлять аргумент и не хочу, чтобы файл testng-1.0.dtd передавался по сети.
Насколько я понимаю, причина того, что TestNG ищет DTD в сети, заключается в том, чтобы гарантировать, что он получает самое последнее / правильное DTD. TestNG попытается получить DTD с веб-сайта TestNG ТОЛЬКО по протоколу https, и если он не будет найден, вы увидите эту ошибку. Единственный способ отключить это - использовать аргумент JVM, предложенный @ kobebryant2007 .
Если добавить флаг, то исходя из кода мне нет смысла класть файл в ресурсы.
Можете ли вы помочь мне понять, в чем причина этого ожидания того, что TestNG должен читать файл с ваших локальных ресурсов? Если это где-то упоминалось, пожалуйста, укажите мне соответствующую документацию. Все сказано и сделано, если есть сбои в сети, TestNG по умолчанию прерывается. Это было решено в рамках PR https://github.com/cbeust/testng/pull/2386, который будет возвращаться к DTD, встроенному в банку TestNG. Я предполагаю, что после слияния PR вы можете в конечном итоге создать свой файл testng dtd в своем CLASSPATH, который можно получить как ресурс.
@shaburov Что ты пытаешься сделать?
В банке TestNG уже есть DTD, и предполагается, что он будет использоваться.
@juherr Посмотрите на код, который я прикрепил к скриншоту, и поймите, что это не так.
Перед чтением файла из ресурсов будет сгенерировано исключение.
Я считаю, что проблема либо в том, что IntelliJ не использует HTTPS:
Или что URL-адрес без HTTPS отсутствует в списке URLS
(обратите внимание, что TESTNG_DTD_URL
и HTTPS_TESTNG_DTD_URL
абсолютно одинаковы).
@algotastic второй, я полагаю.
@shaburov прав, это ошибка:
https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L33
Это должно быть public static final String TESTNG_DTD_URL = "http://testng.org/" + TESTNG_DTD;
И это https://github.com/cbeust/testng/blob/7.3.0/src/main/java/org/testng/xml/Parser.java#L28
должно быть public static final String OLD_TESTNG_DTD_URL = "http://beust.com/testng/" + TESTNG_DTD;
Да, похоже, неожиданная «заменить все» с https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049
Я могу добавить '-Dtestng.dtd.http = true', но это делает невозможным запуск теста класса / метода в IntelliJ (щелкните правой кнопкой мыши и запустите) в автономном режиме.
Закрыто через https://github.com/cbeust/testng/pull/2409
Самый полезный комментарий
Да, похоже, неожиданная «заменить все» с https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049