<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 plugin الإصدار 202.7660.26)
أعتقد أنك تحتاج فقط إلى إضافة وسيطات VM "-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. أظن أنه بمجرد دمج العلاقات العامة ، يمكن أن ينتهي بك الأمر إلى إنشاء ملف 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/commit/cf22ccfcb2a34f9b0bb4fa8cbedae5297ddd2049