我有一些针对 angularjs 应用程序运行的简单业力/茉莉花单元测试。我使用最新版本的 Chrome 并从 WebStorm IDE 中运行我的测试。
有时测试套件运行得非常快(0.24 秒)
有时针对完全相同的代码的完全相同的测试套件运行非常缓慢(120 秒)
我已经尝试了所有常识性修复。我已经在网上搜索并尝试发现我做错了什么。
为什么我的测试运行如此缓慢?
我有一些针对 angularjs 应用程序运行的简单业力/茉莉花单元测试。我使用最新版本的 Chrome 并从 WebStorm IDE 中运行我的测试。
有时测试套件运行得非常快(0.24 秒)
有时针对完全相同的代码的完全相同的测试套件运行非常缓慢(120 秒)
我已经尝试了所有常识性修复。我已经在网上搜索并尝试发现我做错了什么。
为什么我的测试运行如此缓慢?
答案很简单。
我正在使用 Chrome 运行业力服务器。当您第一次启动 karma 服务器时,Chrome 实例会作为最大化窗口启动。因此,您自然而然地将其最小化,这样您就可以看到您的测试正在运行。
问题是 Chrome 会饿死 CPU 周期的任何最小化或辅助选项卡(切换选项卡)。
因此,如果您将运行 karma 服务器的浏览器实例最小化,或者只是切换到不同的选项卡,那么 karma 服务器会严重缺乏 CPU,并且测试需要很长时间才能完成。
解决方案是保持 karma 选项卡处于活动状态。浏览器窗口可以隐藏在其他窗口之后,但 karma 选项卡必须是选定的选项卡,并且不能最小化浏览器。
遵循这些简单的规则将确保您的测试始终全速运行。
Biofractal 已经回答了他自己的问题,您可以这样做。您还可以将测试设置为在 PhantomJS 或 Chrome Headless 中运行,这基本上允许单元测试仅在您的命令行中运行,从而消除对实际浏览器的影响。