为什么我的AngularJS,Karma / Jasmine测试运行得如此之慢?

时间:2013-10-30 13:38:32

标签: angularjs jasmine karma-runner

我有一些简单的业力/茉莉花单元测试,针对angularjs app运行。我使用最新版本的Chrome并在WebStorm IDE中运行我的测试。

有时候测试套件运行得非常快(0.24秒)

对于完全相同的代码,有时完全相同的测试套件运行速度非常慢(120秒)

我尝试过每一个常识修复。我已经在网上搜索,试图发现我做错了什么。

为什么我的测试运行得这么慢?

2 个答案:

答案 0 :(得分:118)

答案很简单。

我正在使用Chrome来运行业力服务器。当您第一次启动业力服务器时,Chrome的一个实例将作为最大化窗口启动。所以你自然会将其最小化,这样你就可以看到你的测试正在运行。

问题是Chrome会使CPU周期的任何最小化或辅助标签(切换标签)变得匮乏。

因此,如果您最小化运行karma服务器的浏览器实例,或者只是切换到另一个选项卡,那么karma服务器将严重缺乏CPU,并且测试需要很长时间才能完成。

解决方案是保持karma标签处于活动状态。浏览器窗口可以隐藏在其他窗口后面,但是karma选项卡必须是选定的选项卡,并且浏览器不能最小化

遵循这些简单的规则将确保您的测试始终全速运行。

答案 1 :(得分:0)

Biofractal回答了他自己的问题,你可以做到这一点。您还可以将测试设置为在PhantomJS或Chrome Headless中运行,这基本上允许单元测试仅在您的命令行中运行,从而消除了对您的实际浏览器的影响。