详解角业力测试的持续集成实践

  

使用角+业力+茉莉花可以进行前端的单体测试,从前面的文章中我们了解到了业力的工作原理,它会启动一个指定种类的浏览器,然后在此浏览器中运行测试用例。如果需要进行持续集成,比如结合詹金斯或者其他方式进行自动化的测试,如果需要手动关闭浏览器的操作,或者无法提供图形化的界面的情况保证测试的执行这些都会成为持续集成的障碍,这篇文章整理一下解决的常见方法。

  


  

  

当测试环境可以使用浏览器,在这台机器上使用ng测试则能进行测试,业力会启动Chrome浏览器,然后执行测试用例,持续集成的时候,詹金斯通过远程命令执行的方式到可使用浏览器的测试环境中执行ng测试完成测试。
  

  

这种方式非常简单,需要解决的只有一个问题,角的演示应用执行ng测试时,执行完毕之后,Chrome浏览器也不会退出,这样詹金斯的调用部分也不会返回,只需要保证其执行结束后立即关闭浏览器,这种方式就没有问题了。而实际上业力的设定文件中,singleRun正是这个选项,缺省被设定为false,这就是其不退出的原因。只需要将此选项设定为真实即可.demo示例的业力设定文件改成如下即可:

        liumiaocn:演示柳庙cp karma.conf美元。js karma.conf.js.origin   liumiaocn:演示柳庙vi karma.conf.js美元   liumiaocn:演示柳庙diff karma.conf美元。js karma.conf.js.origin   29 c29   & lt;singleRun:没错,   ---   比;singleRun:假的,   liumiaocn:演示柳庙美元   之前      

执行日志如下所示:

        liumiaocn:演示柳庙rm射频覆盖/美元   liumiaocn:演示柳庙$ ls   自述文件。md e2e node_modules src tsconfig.spec.json   角。json karma.conf。js package-lock。json tsconfig.app。json tslint.json   browserslist karma.conf.js。源包中。json tsconfig.json   liumiaocn:演示柳庙美元   liumiaocn:演示柳庙$ ng——代码覆盖测试   30%的建筑模块12/12 0 active31 10 2019 20:19:39.308:信息[karma-server]:业力v4.1.0服务器开始在http://0.0.0.0:9876   31 2019 20:19:39.314:信息(发射器):启动浏览器Chrome与并发无限   30%建筑模块13/13 0 active31 10 2019 20:19:39.324:信息(发射器):从浏览器Chrome   31 2019 20:19:43.028:信息(Chrome 78.0.3904 (Mac OS X 10.14.0):连接>   liumiaocn:演示柳庙=出口路径路径:美元/usr/地方/phantomjs/phantomjs-2.1.1-macosx/bin   phantomjs liumiaocn:演示柳庙$/usr/local/phantomjs/phantomjs-2.1.1-macosx/bin/phantomjs   liumiaocn:演示柳庙phantomjs美元——版本   2.1.1   liumiaocn:演示柳庙美元   之前      

<强>步骤2:安装karma-phantomjs-launcher
  

  

执行日志入如下所示:

        liumiaocn:演示柳庙npm美元安装——save-dev karma-phantomjs-launcher      比;phantomjs-prebuilt@2.1.16安装/用户/柳庙/桌面/演示/node_modules/phantomjs-prebuilt   比;节点install.js      考虑/usr/local/phantomjs/phantomjs-2.1.1-macosx/bin/PhantomJS PhantomJS发现   发现PhantomJS/usr/local/phantomjs/phantomjs-2.1.1-macosx/bin/PhantomJS…验证   写的位置。js文件   PhantomJS已经安装>   liumiaocn:演示柳庙diff karma.conf美元。js karma.conf.js.origin   10 10大   & lt;要求(“karma-phantomjs-launcher”),   ---   比;要求(“karma-chrome-launcher”),   28、29 c28、29   & lt;浏览器:[' PhantomJS '),   & lt;singleRun:没错,   ---   比;浏览器:“铬”,   比;singleRun:假的,   liumiaocn:演示柳庙美元   之前      

修改说明:

  
      <李>仍然需要将singleRun设定为真正的李   <李>将chrome的发射器换成phantomjs李   <李>将浏览器也从Chrome换成PhantomJS李   
  

如果使用的是角8或者是es6的目标设定需要将目标做如下修改

        liumiaocn:演示柳庙diff tsconfig美元。json tsconfig.json.org   13 c13   & lt;“目标”:“es5”,   ---   比;“目标”:“es2015”,   liumiaocn:演示柳庙美元   之前      

<强>步骤3:执行测试
  

  

执行ng测试可以看到使用的是PhantomJS进行的测试,而且在执行过程中并没有浏览器被打开和执行。

        liumiaocn:演示柳庙$ ng——代码覆盖测试   25%建筑94/94 0 active01 11 2019 06:11:48.490模块:信息[karma-server]:业力v4.1.0服务器开始在http://0.0.0.0:9876   2019年01 11日06:11:48.493:信息(发射器):启动浏览器PhantomJS并发性无限   25%建筑96/96 0 active01 11 2019 06:11:48.573模块:信息(发射器):浏览器PhantomJS开始   2019年01 11日06:11:52.035:信息(PhantomJS 2.1.1 (Mac OS X 0.0.0)):连接>   liumiaocn:演示柳庙diff karma.conf美元。js karma.conf.js.origin   28、29 c28、29   & lt;浏览器:[' ChromeHeadless '),   & lt;singleRun:没错,   ---   比;浏览器:“铬”,   比;singleRun:假的,   liumiaocn:演示柳庙美元   

详解角业力测试的持续集成实践