点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,我在通过CI/CD命令行界面对UI5应用程序进行QUnit测试自动化时遇到了麻烦。
当从Documentation SDK(" Explored App")中获取最佳实践示例代码时,例如#/sample ... testing.16/preview
下载源代码zip并解压缩到本地文件夹,例如c:\ test。
在根目录(/webapp上方)配置一个简单的package.json
{ " name":" projectName", " version":" 1.0.0", " devDependencies":{ " grunt":"〜0.4.1", " grunt-contrib-qunit":"> = 0.2.1" } }
咕unt声文件(mygruntfile.js)
module.exports = function(grunt){ "使用严格"; grunt.initConfig({ qunit:{ 全部:['webapp/test/unit/unitTests.qunit.html'] } }); grunt.loadNpmTasks('grunt-contrib-qunit'); grunt.registerTask('default',['qunit']); };
然后在命令提示符的根目录下,安装节点依赖项
npm安装
并运行grunt版本
grunt --gruntfile mygruntfile.js --verbose --debug
您将看到PhantomJS无头浏览器运行时出现多个错误。
我试图用相同的技术来证明,但是在独立的QUnit引导页面上进行测试,并测试了库(即没有任何SAP/UI5代码)。 有趣的是,我还发现了错误,如果从QUnit引导html页面中删除了QUnit脚本标记,则可以解决该错误。
我认为这是由于grunt-contrib-qunit注入了自己的QUnit版本,并且与引导页面中定义的实例冲突。
以下是SAP测试脚本方案和我的最小qunit测试方案(在错误输出的第65行上)常见的一个明显错误:
[D] [" phantomjs"," error.onError"," ReferenceError:找不到变量:QUnit",[{" file":" phantomjs://code/bridge.js"," line" :14," function":""}]]
通过我的独立测试,我可以轻松删除对qunit.js的引导引用; 测试将在无头phantomJS中运行,但在Chrome中将失败。 保留它,它可以在Chrome中运行,但无法实现无头phantomJS。
在UI5最佳实践QUnit测试页中,QUnit被包装在SAP需求库中,我不知道如何删除它。
我对社区的问题是
1)是否存在运行UI5 QUnit和OPA5测试的成功的命令行自动化示例? 直接或通过testsuite.qunit.html页面。 或;
2)有人可以建议如何在unitTests.qunit.html引导页面和UI5中删除或更改QUnit引用吗?
您好,我很乐意报告自己的问题的答案。 一位前同事同事解决了我最初发布的问题。
我的问题1)的答案是 https://github.com/SAP/openui5-sample-app 。 但是,值得注意的是,该示例使用为基于组件的执行而不是iFrame定义的OPA5测试-这需要对单元测试进行代码更改,而不仅仅是构建配置。 这是因为该示例使用了Karma + Istanbul代码覆盖率报告,并且Istanbul不支持iFrames代码覆盖率。
我的问题2的答案是为非PhantomJS浏览器动态编写QUnit js参考:
嗨,
即使我尝试使用相同的gruntfile运行qunit,但我看到qunit正在运行但没有读取测试用例。
PFB下面的错误。
运行" qunit:all"(qunit)任务
[D]任务源:D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ tasks \ qunit.js
>> 0个测试完成,其中0个失败,0个被跳过,0个待办事项。
>> 0个断言(以0ms为单位),已通过:0,失败:0
(节点:80444)UnhandledPromiseRejectionWarning:错误:协议错误(Page.addScriptToEvaluateOnNewDocument):目标已关闭。
在D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ Connection.js:183:56
在CDPSession.send(D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ Connection.js中的新Promise(:182:12)
在Page.evaluateOnNewDocument(D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ Page.js:842:24)
在页面上。<匿名>(D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ node_modules \ puppeteer \ lib \ helper.js:112:23)
在D:\ QUnit \ SAPUI5-master \ SAPUI5-master \ node_modules \ grunt-contrib-qunit \ tasks \ qunit.js:405:14
在processTicksAndRejections(internal/process/task_queues.js:85:5)
(节点:80444)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。 该错误是由于在没有catch块的情况下抛出异步函数而引起的,或者是由于拒绝了.catch()未处理的承诺而导致的。 (拒绝ID:1)
(节点:80444)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。 将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。
完成。
请帮助
一周热门 更多>