使用以下屏幕截图我的问题非常简单明了:我不能区分我的测试套件是来自我的量角器测试还是业力测试.
>红色突出显示我的量角器测试套件
>没有突出显示的是我的Karma测试套件.
因此,我问自己以下问题:
>对于通过持续集成管理今天的单元测试和端到端测试,是否有一种良好的做法?
>我是否必须在单独的Jenkins工作中分开测试?这是否意味着我需要在Jenkins管道工作流程中使用两个不同的JenkinsFiles?
>或者相反,我可以简单地为每个测试套件设置一个前缀,这样我就可以轻松管理所有内容?
两个最后的选项似乎都不切实际.
编辑:关注这个问题,并在投票结束前完整阅读,因为它不是基于意见的.我将明确表示:我面临着持续集成的不切实际的实现,对问题有一个明确的定义,我希望有一个解决方案可以解决我当前的问题,如果可能的话,还有一些关于测试前端的强制实践应用程序,也可以清除此问题.
解决方法
我自己使用Teamcity,但是我已经将它改编为与Jenkins一起使用.我已经使用Angular CLI设置了一个演示应用程序来演示.
构建服务器(如Jenkins和TeamCity)只需从结果文件(Jenkins,通常是JUnit,我将在下面演示)或stdout(TeamCity)的服务消息中读取.因此,我们可以在写入这些记录之前操作测试结果数据,这使我们能够区分业力(单位)和量角器(e2e),而无需在单独的工作上运行测试或者使用不必要的前缀膨胀测试套件.
你将需要两个额外的包,karma-junit-reporter和jasmine-reporters.我们将使用karma-junit-reporter for Karma和jasmine-reporter for Protractor.
这些包允许我们在将结果写入JUnit文件之前修改套件名称,这将有助于我们区分单元和e2e.
您可以按照每个工具提供的安装说明进行操作,也可以按照以下方式执
安装karma-junit-reporter:
npm install karma-junit-reporter –save-dev
对karma.conf.js文件进行以下更改:
将karma-junit-reporter添加到plugins数组:
require('karma-junit-reporter')
将junit添加到报告器数组:
reporters: ['progress','kjhtml','junit']
junitReporter: { outputDir: 'testresults',outputFile: 'karmatest.xml',suite: 'unit',// whichever prefix you wish to use usebrowserName: false,}
安装jasmine-reporter:
npm install jasmine-reporters –save-dev
请注意,截至写作; Protractor的jasmine-reporter文档声明你应该运行npm install –save-dev jasmine-reporters@^2.0.0 – 但是这会导致问题而无需异常处理.我建议安装最新的.
将以下代码添加到protractor.conf.js文件的onPrepare函数中:
var jasmineReporters = require('jasmine-reporters'); return browser.getProcessedConfig().then(function (config) { var junitReporter = new jasmineReporters.JUnitXmlReporter({ consolidateall: true,savePath: 'testresults',filePrefix: 'protractor-test-results',modifySuiteName: function (generatedSuiteName,suite) { return 'e2e.' + generatedSuiteName; // whichever prefix you wish to use } }); jasmine.getEnv().addReporter(junitReporter); });
您现在应该将Jenkins作业配置为运行ng test,ng e2e并添加post构建操作以发布JUnit测试结果报告,如下所示:
testresults\*.xml
您的Jenkins测试结果仪表板现在将如下所示:
出于本演示的目的,我未通过单元测试和e2e测试,因为您可以看到每个测试名称都有一个前缀,用于确定它是单位还是e2e.您还可以通过单击包下的链接深入查看所有e2e或所有单元测试.
如果你很勇敢并且有很多时间可以编写自己的实用程序,它可以完成与这些程序包相同的工作,从而获得更加个性化的结果.
我希望这可以帮助您实现所需的结果.
谢谢