javascript - Protractor:Jasmine-Reporter (jasmine2) 正在生成奇怪的 Junit XML 报告

标签 javascript node.js junit jasmine protractor

我之前使用过 Jasmine reports 1.x,我可以生成漂亮的 Junit Xml 报告。但后来由于一些新的很酷的功能,我们转向了 Jasmine reports2.x。但问题是我无法为我的测试结果生成正确的 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 文件中使用记者插件的方式:

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() can optionally return a promise Protractor 在开始测试执行之前将等待。

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

可以引用这个answer

我能够通过在获取浏览器功能时返回一个 promise 来解决这个问题:



    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
            }));
        });
    }


请告诉我这是否有帮助。

关于javascript - Protractor:Jasmine-Reporter (jasmine2) 正在生成奇怪的 Junit XML 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755287/

相关文章:

javascript - Jest 测试为 eventemitter 对象发出事件(express)

javascript - 为什么我的常量没有指向新值

javascript - 循环遍历 HTML 元素数组并添加到数组

javascript - 这个函数的空间复杂度是多少?

node.js - 依次执行 Node 应用程序中收到的 webhook

node.js - 构建具有多个数据库支持的 Node.js REST API 应用程序的最佳实践是什么?

Spring、JPA 事务仅在 JUnit 测试中有效,但在应用程序中无效

java - 如何模拟 springcontext?

java - Sybase ASE 到 HSQLDB JUnit java.sql.SQLSyntaxErrorException : type not found or user lacks privilege

javascript - 检查数组中的值