phpunit - 测试非常慢
我正在深入研究单元测试的世界。
我遇到的一个问题,也是我想要反馈的地方,是当一个人运行多个测试套件时,也许只是我,但我需要使用参数 --process-isolation 来通过我的测试。我可以单独运行我的任何套件而不会出现问题,但是如果我没有--进程隔离的情况下运行我迄今为止拥有的6-7个套件,并且在它们之间分布了180个断言,那么运行它们将失败。问题是,使用此参数会使测试运行持续 35 分钟,而通常为 2.5 分钟。那是一种哄的等待。
该问题与将模拟的 DI 容器用于特定测试有关,并且当测试套件以链接方式运行时,容器未正确重新初始化。在 DI 容器上设置的静态属性用于测试预期故障会使以下套件中的测试失败。容器有一个参数,可以将包含的对象保存在静态 var 中,以便在每次调用时返回相同的实例。伪装的单例。这在应用程序级别运行良好,只是测试的麻烦。
我可以避免使用容器参数,并对应用程序进行编码以不使用静态属性,但是为了方法而避免使用有用的语言构造似乎有些过分。
也许我做错了什么(我当然希望如此!)但我的印象是,如果有人想在每次测试中都以干净的状态运行SUT测试,那么使用--进程隔离就没有绕过去了。这使得测试非常耗时,并带走了一点乐趣。我在编码时通过单独运行套件和测试,并在主要提交之前在后台运行套件,在某种程度上绕过了这个问题。
我正在经历的事情是否正常,有没有办法解决这个问题?你们的测试人员如何确保测试时间是合理的?如何处理静态数据,以免影响测试?
任何见解赞赏/评论赞赏。