【问题标题】:AngularJS Karma Unit-Tests Memory LeakAngularJS Karma 单元测试内存泄漏
【发布时间】:2018-02-23 10:20:42
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果没有看到至少你的业力配置和一些测试 - 长期运行的测试,这很难说。但是,我可以告诉您,当我确实遇到类似问题时,这是因为文件被不必要地加载,并且在某些情况下在我的业力配置中不止一次。这导致我的业力在几千次测试后崩溃。
  • 分离到不同的模块也很有帮助。如果一段代码不需要模块,那么请尽量确保没有为测试加载该模块。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2013-03-10
    • 2010-09-15
    相关资源
    最近更新 更多