angular – 分组测试结果:Karma / Protractor与Jenkins集成
我已经成功设置了一个Jenkins作业,该作业执行我的Karma测试(使用Angular-CLI),还有我的Protractor测试Angular4 App(使用Angular-CLI).这两个测试都将输出一个
XML文件,Jenkins将使用该文件来显示结果和详细信息.
使用以下屏幕截图我的问题非常简单明了:我不能区分我的测试套件是来自我的量角器测试还是业力测试. >红色突出显示我的量角器测试套件 因此,我问自己以下问题: >对于通过持续集成管理今天的单元测试和端到端测试,是否有一种良好的做法? 两个最后的选项似乎都不切实际. 编辑:关注这个问题,并在投票结束前完整阅读,因为它不是基于意见的.我将明确表示:我面临着持续集成的不切实际的实现,对问题有一个明确的定义,我希望有一个解决方案可以解决我当前的问题,如果可能的话,还有一些关于测试前端的强制实践应用程序,也可以清除此问题. 解决方法
虽然这是一个常见问题,但我认为没有最佳或良好的做法.它只取决于开发人员希望如何在构建服务器上显示测试结果.
我为您的特定用例提供了解决方案,希望能解决您的技术问题. 我自己使用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:
对karma.conf.js文件进行以下更改: 将karma-junit-reporter添加到plugins数组: require('karma-junit-reporter') 将junit添加到报告器数组: reporters: ['progress','kjhtml','junit'] 使用以下内容添加junitReporter对象: junitReporter: { outputDir: 'testresults',outputFile: 'karmatest.xml',suite: 'unit',// whichever prefix you wish to use useBrowserName: false,} 安装jasmine-reporter:
请注意,截至写作; 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测试结果报告,如下所示:
您的Jenkins测试结果仪表板现在将如下所示: 出于本演示的目的,我未通过单元测试和e2e测试,因为您可以看到每个测试名称都有一个前缀,用于确定它是单位还是e2e.您还可以通过单击包下的链接深入查看所有e2e或所有单元测试. 如果你很勇敢并且有很多时间可以编写自己的实用程序,它可以完成与这些程序包相同的工作,从而获得更加个性化的结果. 我希望这可以帮助您实现所需的结果. 谢谢 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |