【发布时间】:2018-02-23 10:20:42
【问题描述】:
我们目前正在开发一个包含大约 2500 个 Jasmine 测试用例的 angularjs 项目。我们使用 chrome 作为浏览器和 karma-ng-html2js-preprocessor 来预处理我们的模板。
我们现在面临的问题是我们的测试消耗大量内存并且我们的 karma 服务器断开连接,因为后面的测试花费的时间太长了。大约 2000 个测试在 3 分钟内执行,但最后 500 个测试最多需要 10 分钟。我们尝试了几种我们在网上找到的解决方案来解决这个问题,但没有任何效果。我们尝试了以下解决方案:
- 使用此运算符:https://gist.github.com/traviskaufman/11131303
- 在 afterEach 中声明变量:https://blog.thecodecampus.de/avoid-memory-leaks-angularjs-unit-tests/
我们使用 chrome 内存快照工具分析了内存使用情况。第一张快照是在 300 次测试后拍摄的,第二张是在 600 次测试后拍摄的。
有人可以帮忙解决这个问题吗?不幸的是,我们不允许显示某些代码。但我们的测试与您可以在网络上找到的 angular jasmine 示例没有什么不同。
【问题讨论】:
-
如果没有看到至少你的业力配置和一些测试 - 长期运行的测试,这很难说。但是,我可以告诉您,当我确实遇到类似问题时,这是因为文件被不必要地加载,并且在某些情况下在我的业力配置中不止一次。这导致我的业力在几千次测试后崩溃。
-
分离到不同的模块也很有帮助。如果一段代码不需要模块,那么请尽量确保没有为测试加载该模块。
标签: angularjs unit-testing memory-leaks karma-runner karma-jasmine