Testng: [ОШИБКА] TestNG по умолчанию отключает загрузку DTD с незащищенных URL.

Созданный на 9 окт. 2020  ·  10Комментарии  ·  Источник: cbeust/testng

Версия TestNG

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

Ожидаемое поведение

Выбрасывать исключение после чтения файла testng-1.0.dtd из ресурса
image

Фактическое поведение

Файл testng-1.0.dtd не читается из ресурсов

Может ли проблема воспроизводиться на раннере?

IntelliJ v2020.2.3 (плагин TestNG IDE версии 202.7660.26)

Самый полезный комментарий

Да, похоже, неожиданная «заменить все» с https://github.com/cbeust/testng/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049

Все 10 Комментарий

Я думаю, вам просто нужно добавить аргументы виртуальной машины -Dtestng.dtd.http = true или использовать ресурсы HTTPS. В настоящее время TestNG требует HTTPS по умолчанию в файлах набора.

@ kobebryant2007 В

  1. Я не хочу добавлять аргумент и не хочу, чтобы файл testng-1.0.dtd передавался по сети.
  2. Если добавить флаг, то исходя из кода мне нет смысла класть файл в ресурсы.

@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:
image

Или что URL-адрес без HTTPS отсутствует в списке URLS (обратите внимание, что TESTNG_DTD_URL и HTTPS_TESTNG_DTD_URL абсолютно одинаковы).
image

@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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги