我使用Ember 5.6.0。运行
ember test --silent --reporter xunit > ember-test-result.xml
会输出包含以下内容的 XML:
<testsuite name="Testem Tests" tests="439" skipped="0" todo="0" failures="0" timestamp="Thu Jun 06 2024 12:07:57 GMT+0200 (Central European Summer Time)" time="13.557">
<testcase classname="Chrome 125.0" name="acceptance/login-view-test.js: some test" time="0.157"/>
<testcase classname="Chrome 125.0" name="acceptance/login-view-test.js: some other test" time="0.065"/>
<testcase classname="Chrome 125.0" name="acceptance/login-view-test.js: some third test" time="0.072"/>
<testcase classname="Chrome 125.0" name="Integration | components | parameter-tile: test this as well" time="0.047"/>
<testcase classname="Chrome 125.0" name="Integration | helpers | equal: same values are equal" time="0.047"/>
<testcase classname="Chrome 125.0" name="Integration | helpers | equal: different values are not equal" time="0.045"/>
<testcase classname="Chrome 125.0" name="Integration | helpers | equal: strict equal comparision is used" time="0.046"/>
<testcase classname="Chrome 125.0" name="Integration | Helper | greater: equals is false" time="0.037"/>
<testcase classname="Chrome 125.0" name="Integration | Helper | greater: 2>1 is true" time="0.038"/>
<testcase classname="Chrome 125.0" name="Integration | Helper | greater: 1>2 is false" time="0.036"/>
<!-- ... about 400 more lines ... -->
</testsuite>
我想配置这个。
classname
应该是文件(也许带有路径?),name
应该只是实际的 测试用例 的名称,诸如此类。 testsuite
的名称“Testem Tests”也不理想。有办法吗?
文档相当简约,但也许我错过了一些东西。或者也许我必须使用一些 Custom Reporter,但我希望从 xunit 继承,这是一个选项吗?
我认为你必须编写一个自定义记者。 不知何故。
这里是xunit记者代码供参考:https://github.com/testem/testem/blob/1c2a5bdb3beb5f52911deb738c204d569c33d511/lib/reporters/xunit_reporter.js#L6
您会遇到的一些挑战:
为了以不同的方式管理名称,您可能会更好地对文件进行后处理。 例如:
let xml = fs.readFile('thefile.xml')
let parsedXML = someLibrary(xml);
parsedXML['testsuite'].forEach(suite => {
suite['testcase'].forEach(case => {
let [className, ...name] = case.name.split(':');
case.className = className;
case.name = name.join(':');
})
})
// TODO: write the file