我需要能够将qUnit测试报告给文件,以便我的构建服务器可以解析它们。
我正在通过Grunt使用qUnit(grunt-contrib-qunit)以及找到here的jUnit记者。
我可以将报告写入日志,就像它说明的那样,但我无法将其写入文件。我在我的gruntfile中尝试过qunit回调,但它们似乎都没有得到xml信息。我还尝试简单地重定向stdout,但它(当然)打印了所有非xml命令行的东西以及xml。
简而言之,我在console.log语句中正确地回应了XML。我只需要以某种方式将其转换为文件。通过Grunt,phantomjs或任何其他方式。
答案 0 :(得分:0)
好吧,如果你从Grunt运行QUnit测试,那么你可以随意使用Node的全部功能。我从来没有使用过那个JUnit插件,但是如果它只是在你的QUnit HTML文件中给你回调,那么你需要一个浏览器解决方案(即使那是phantomjs)。
Phantom uses QtWebKit已经实现了File API,因此您可以使用JUnit的回调实现解决方案,但是,当然,如果您在某些其他地方运行测试,那么这将失败浏览器(即IE9或以下)。以下是这可能的样子(不保证这是确切的,我没有运行它):
QUnit.jUnitReport = function(report) {
function onInitFs(fs) {
fs.root.getFile('qunit_report.xml', {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) { /* if you need it */ };
fileWriter.onerror = function(e) { /* if you need it */ };
var blob = new Blob([report.xml], {type: 'application/xml'});
fileWriter.write(blob);
}, someErrorHandlerFunction);
}, someErrorHandlerFunction);
}
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, someErrorHandlerFunction);
}
同样,如果你需要做一些事情来在IE9或(或某些移动浏览器)下编写文件,你将需要另一个解决方案,比如启动ajax请求将数据上传到存储的服务器文件。你甚至可以运行那个"服务器"从Grunt内部并让Node写入文件。