مُسجِل Junit
مُسجِل WebdriverIO ينشئ تقارير JUnit متوافقة مع Jenkins بتنسيق XML
التثبيت
الطريقة الأسهل هي الاحتفاظ بـ @wdio/junit-reporter
كتبعية تطوير في ملف package.json
الخاص بك، عبر:
npm install @wdio/junit-reporter --save-dev
يمكن العثور على تعليمات حول كيفية تثبيت WebdriverIO
هنا.
المخرجات
سينتج هذا المُسجِل تقريرًا لكل منفذ، وبالتالي ستتلقى تقرير xml لكل ملف spec. فيما يلي أمثلة على مخرجات XML نظرًا لسيناريوهات مختلفة في ملف المواصفات.
كتلة describe واحدة
describe('a test suite', () => {
it('a test case', function () {
// do something
// assert something
});
});
تصبح
<testsuites>
<testsuite name="a test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
<testcase classname="chrome.a_test_case" name="a_test_suite_a_test_case" time="11.706"/>
</testsuite>
</testsuites>
كتلة describe متداخلة
describe('a test suite', () => {
describe('a nested test suite', function() {
it('a test case', function () {
// do something
// assert something
});
});
});
تصبح
<testsuites>
<testsuite name="a test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
</testsuite>
<testsuite name="a nested test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a nested test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
<testcase classname="chrome.a_test_case" name="a nested test suite a test case" time="11.706"/>
</testsuite>
</testsuites>
كتل describe متعددة
describe('a test suite', () => {
it('a test case', function () {
// do something
// assert something
});
});
describe('a second test suite', () => {
it('a second test case', function () {
// do something
// assert something
});
});
تصبح
<testsuites>
<testsuite name="a test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
<testcase classname="chrome.a_test_case" name="a nested test suite a test case" time="11.706"/>
</properties>
</testsuite>
<testsuite name="a second test suite" timestamp="2019-04-18T13:45:21" time="11.735" tests="0" failures="0" errors="0" skipped="0">
<properties>
<property name="specId" value="0"/>
<property name="suiteName" value="a second test suite"/>
<property name="capabilities" value="chrome"/>
<property name="file" value=".\test\specs\asuite.spec.js"/>
</properties>
<testcase classname="chrome.a_second_test_case" name="a_second_test_suite_a_second_test_case" time="11.706"/>
</testsuite>
</testsuites>
الإخفاقات والأخطاء
يتم تعيين جميع إخفاقات حالة الاختبار كأخطاء حالة اختبار JUnit. ستبدو حالة الاختبار الفاشلة بسبب فشل التأكيد أو الخطأ كما يلي:
<testcase classname="chrome.a_test_case" name="a_test_suite_a_test_case" time="0.372">
<failure message="Error: some error"/>
<system-err>
<![CDATA[
Error: some assertion failure
at UserContext.<anonymous> (C:\repo\webdriver-example\test\specs/a_test_suite.spec.js:22:17)
]]>
</system-err>
</testcase>
الإعداد
يوضح الكود التالي الإعداد الافتراضي لمشغل اختبارات wdio. ما عليك سوى إضافة 'junit'
كمسجل إلى المصفوفة. للحصول على بعض المخرجات أثناء الاختبار، يمكنك تشغيل WDIO Dot Reporter و WDIO JUnit Reporter في نفس الوقت:
// wdio.conf.js
module.exports = {
// ...
reporters: [
'dot',
['junit', {
outputDir: './',
outputFileFormat: function(options) { // optional
return `results-${options.cid}.${options.capabilities}.xml`
}
}]
],
// ...
};
الخيارات التالية مدعومة:
outputDir
تحديد دليل حيث يجب تخزين ملفات xml الخاصة بك.
النوع: String
مطلوب