angular4+karma+jasmine进行UT测试导致浏览器崩溃

麦兜大大
  • 22

测试环境:
1、测试环境win7、node v8.9.4 chrome65.0.3325.181(64位) firefox60.0.1(64位) 笔记本内存8G
2、工程为angular4.4.6开发的大型后台管理系统前端页面。UT测试使用karma1.7.0+jasmine2.6.2。工程整体的测试case为3480个。
现象:
当进行全体组件测试时,无论是启动firefox还是chrome,浏览器内存都会随着测试的深入而进行增加,并且在测试运行到900个case左右的时候,因为浏览器内存的暴涨而停止测试,并且又restart浏览器,使得测试从头开始,无法完成全体case的测试,看不到整体代码的覆盖率。
问题:
1、为了能看到全局的覆盖率,进行全体case的测试是必须的,所以想知道造成浏览器到了一定时候就重启,并且内存不停增加的原因是什么(自己没有分析明白)
2、如何去改善测试手法,比如可以通过karma的配置解决这个问题,或者是优化测试代码去解决(如果是代码问题,那问题大概的方向是什么)

已经使用的改善方法
1、重新配置karma.config.js文件,比如:
(1)不使用浏览器启动而是使用phantomjs,运行到一定时候也会重启然后又开始重新测试
(2)清除浏览器上的上下文,如clearContext设置为true,问题依旧
2、改善代码,在每个测试文件中都增加afterEach方法,清除全局变量,问题也出现

在通过查看多数资料后仍然没有找到合适的方法使得测试可以继续。所以这里就先拜托大家了。

PS:在另一台mac上进行测试也是出现上面的问题,mac的内存为16G。所以暂时没有升级硬件的打算。

回复
阅读 1.9k
1 个回答

可以试试使用ChromeHeadless.
在karma.config.js中配置:browsers:['ChromeHeadless']
Headless Chrome 是一种在没有浏览器用户界面的无需显示环境中运行 Chrome 浏览器的方法。使用 Headless Chrome(而不是直接在 Node 中测试) 的一个好处是 JavaScript 测试将在与你的网站用户相同的环境中执行。Headless Chrome 为你提供了真正的浏览器环境,却没有运行完整版本的 Chrome 一样的内存开销。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏