52

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

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

有时针对完全相同的代码的完全相同的测试套件运行非常缓慢(120 秒)

我已经尝试了所有常识性修复。我已经在网上搜索并尝试发现我做错了什么。

为什么我的测试运行如此缓慢?

4

2 回答 2

123

答案很简单。

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

问题是 Chrome 会饿死 CPU 周期的任何最小化或辅助选项卡(切换选项卡)。

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

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

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

于 2013-10-30T13:38:32.353 回答
0

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

于 2016-05-23T01:35:45.183 回答