量角器:Jasmine-Reporter (jasmine2)正在生成奇怪的Junit XML报告

Protractor: Jasmine-Reporter (jasmine2) is generating weird Junit XML report

本文关键字:Junit 报告 XML Jasmine-Reporter jasmine2 量角器      更新时间:2023-09-26

我用的是Jasmine reporter 1。我可以生成漂亮的Junit Xml报告。但后来我们搬到了Jasmine reporter。因为它有一些很酷的新功能。但问题是我无法为我的测试结果生成正确的Junit XML报告。我的XML输出如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<testsuites>
 <testsuite name="focused specs" timestamp="2015-07-31T17:00:42" hostname="localhost" time="6.225" errors="0" tests="3" skipped="0" disabled="0" failures="0">
  <testcase classname="focused specs" name="DDD" time="2.169" />
  <testcase classname="focused specs" name="EEE" time="1.514" />
  <testcase classname="focused specs" name="FFF" time="0.615" />
 </testsuite>
 <testsuite name="focused specs.SQLITE" timestamp="2015-07-31T17:00:46" hostname="localhost" time="0" errors="0" tests="0" skipped="0" disabled="0" failures="0">
 </testsuite>
 <testsuite name="focused specs.System admin page UI - delete user from MS SQL database through UI" timestamp="2015-07-31T17:00:46" hostname="localhost" time="1.924" errors="0" tests="3" skipped="0" disabled="0" failures="0">
  <testcase classname="focused specs.System admin page UI - delete user from MS SQL database through UI" name="AAA" time="1.018" />
  <testcase classname="focused specs.System admin page UI - delete user from MS SQL database through UI" name="BBB" time="0.171" />
  <testcase classname="focused specs.System admin page UI - delete user from MS SQL database through UI" name="CCC" time="0.225" />
 </testsuite>
</testsuites>

我不明白为什么我在类和测试套件名称中看到"集中规格"。同样,对于我的第一个测试套件,你可以看到测试套件的名称不见了(被"聚焦规格"取代),并显示在下一个标签"SQLITE"中。这就是我如何在我的。conf文件中使用reporter插件:

exports.config = {
  //multiCapabilities: [{'browserName': 'firefox'},{'browserName': 'chrome'},{'browserName': 'internet explorer'}],
	capabilities: {'browserName': 'chrome'},
  	seleniumAddress: 'http://localhost:4444/wd/hub',
	specs: ['./runner/runner-*.js'],
	allScriptsTimeout: 10000,
	getPageTimeout: 10000,
	framework: 'jasmine2',
	onPrepare: function() {
		var jasmineReporters = require('jasmine-reporters');
		var capsPromise = browser.getCapabilities();
		capsPromise.then(function(caps){
			var browserName = caps.caps_.browserName.toUpperCase();
			var browserVersion = caps.caps_.version;
			var prePendStr = browserName + "-" + browserVersion + "-";
			jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
				consolidateAll: true,
				savePath: 'XML-Results',
				filePrefix: prePendStr
			}));
		});
	},
};

你知道我为什么受苦吗?

谢谢。

我也有和你一样的问题。

经过研究,我发现onPrepare()可以选择返回一个承诺,Protractor将在开始测试执行之前等待。

这里可能发生的情况是,测试在报告文件初始化完成之前就开始执行了。

你可以参考这个答案

我可以通过在获得浏览器功能时返回一个承诺来解决这个问题:

<>之前 onPrepare: function () { var jasmineReporters = require('jasmine-reporters'); // return promise here to ensure this gets completed before tests run return browser.getCapabilities().then(function (caps) { var browserName = caps.caps_.browserName.toUpperCase(); var browserVersion = caps.caps_.version; var prePendStr = browserName + "-" + browserVersion + "-"; jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({ consolidateAll: true, savePath: 'XML-Results', filePrefix: prePendStr })); }); } 之前

如果有帮助请告诉我