【问题标题】:How much memory for unit test suite is ok?单元测试套件需要多少内存?
【发布时间】:2011-12-04 09:55:22
【问题描述】:

我有大约 700 个测试和大约 1500 个断言,测试在 RAM 驱动器上的 sqlite 上运行。我使用phpunit /dir/name 运行它,没有任何额外的套件设置。

测试写得很好(我希望如此),应用程序和每个测试都运行得很快,并且每个测试的内存使用量都不大(永远不会超过 10M)。

测试分开运行后一切正常。但是当我一起运行所有测试时, PHPUnit 报告内存使用量约为 450MB。

  • 500M 可以吗?我应该将memory_limit 更新为 700MB 以确保安全吗?
  • 如何避免这样的内存使用?

我知道答案是取决于应用程序,但我想知道哪个内存级别可以测试中等级别的应用程序达到。

更新:

我们正在tearDown() 中使用事务和回滚数据库更改

【问题讨论】:

  • 您可以告诉 phpunit 分别运行所有测试。还要检查您没有在测试之间增加 SQLlite 数据库。

标签: php unit-testing memory-leaks tdd phpunit


【解决方案1】:

PHPUnit 在运行任何测试之前为每个测试方法和每个数据提供者的每个参数数组实例化一个测试用例。启动时,任何异常和断言失败都会引用引发它的实例。正如 MasterCassim 所说,这使得取消设置您在 tearDown() 中分配给测试的任何实例变量非常重要。

但这主要意味着您必须接受随着测试数量的增加而不断增长的内存需求。如果你也生成代码覆盖率,这会大大增加。我们的主网站项目以 2GB 的限制运行。

您可以在单独的进程中运行测试,但会为增加运行时间付出高昂代价。

注意: Issue #10 应该可以解决这个问题,但我不知道它在 3.6 中的状态。

【讨论】:

  • 据我所知,第 10 期将不会成为将在不久的将来发生的初始 3.6 版本的一部分。所以写拆解绝对不是浪费时间。
【解决方案2】:

如果你一起运行测试,你必须使用 tearDown() 方法来“释放”内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2011-06-10
    • 1970-01-01
    相关资源
    最近更新 更多