AngularJS Karma 单元测试内存泄漏

标签 angularjs unit-testing memory-leaks karma-runner karma-jasmine

我们目前正在开发一个 angularjs 项目,其中包含大约 2500 个 Jasmine 测试用例。我们使用 chrome 作为浏览器和 karma-ng-html2js-preprocessor 来预处理我们的模板。

我们现在面临的问题是我们的测试消耗了大量内存并且我们的 karma 服务器断开连接,因为后面的测试花费的时间太长。大约 2000 个测试在 3 分钟内执行,但最后 500 个测试最多需要 10 分钟。我们尝试了在网上找到的几种解决方案来解决这个问题,但没有任何效果。我们尝试了以下解决方案:

我们使用chrome内存快照工具分析了内存使用情况。第一个快照是在 300 次测试后拍摄的,第二张快照是在 600 次测试后拍摄的。

First Snapshot (300 Tests) Second Snapshot (600 Tests)

有人能帮忙解决这个问题吗?不幸的是,我们不允许显示某些代码。但我们的测试与您在网络上找到的 Angular Jasmine 示例没有什么不同。

最佳答案

如果在“describe” block 内部但在“it”外部使用变量,则使用 Angular 进行 Jasmine 测试可能会产生内存泄漏。未清除的 html 元素也会累积泄漏。

很好的描述: https://developers.google.com/web/updates/2017/04/headless-chrome#frontend

关于AngularJS Karma 单元测试内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218987/

相关文章:

unit-testing - Angular 6 - 单元测试 Mat-Select

c++ - 避免内存泄漏

javascript - 在 AngularJS 中绑定(bind)键盘事件

javascript - 传单折线的标签

c++ - TFS 构建 - 将 MSBuild 项目值发送到 vstest 运行时

go - 练习 : Equivalent Binary Trees? 的解决方案中的内存泄漏

OpenGL GPU内存清理,需要吗?

angularjs - Atom-shell + AngularJS - 如何打开文件保存对话框?

javascript - 如何在对象数组中查找和编辑对象的属性?

google-app-engine - 如何对 Google App Engine Go HTTP 处理程序进行单元测试?