PHPUnit 运行程序

Posted

技术标签:

【中文标题】PHPUnit 运行程序【英文标题】:PHPUnit run procedure 【发布时间】:2016-09-01 05:52:22 【问题描述】:

我有几个关于 phpunit 如何运行测试的问题。 假设我有一个包含 3 个测试方法的类,以及一个 setUp() 和 tearDown() 方法。

当我运行 phpunit 时,它是如何运行测试的?

    它是否初始化类一次并运行setUp(),然后是测试方法,然后是tearDown(),然后对第二种方法重复上述步骤,依此类推,或者

    每次都会实例化类,它将运行每个测试方法

此过程是否记录在某处?

谢谢

【问题讨论】:

有一个非常简单的方法可以找出:让类的构造函数在每次调用时显示一条消息,然后运行测试用例并统计显示的消息数。 大声笑。你说的对。我检查了它,它实际上每次运行测试方法时都会实例化该类,这与@Tal Avissar 建议的相反 【参考方案1】:

我认为提及以下之间的区别会很有用:

    设置() 该方法在每个测试用例之前调用,这意味着每个测试类可以调用该方法几次。

    setUpBeforeClass() 每个类只执行一次方法,甚至在构造对象之前,这就是为什么它被标记为静态公共函数的原因。

在我们使用的大多数单元测试中都可以找到上述两种方法。

tearDownAfterClass 和 tearDown() 的区别类似,tearDown() 方法在每个测试用例之后调用,而 tearDownAfterClass() 方法在类中的所有测试完成之后调用,并且在最后一个 tearDown() 方法被调用之后。

类被实例化一次,然后所有的测试方法都在这个实例上运行。

【讨论】:

嗨。请检查我的问题。我要问的是类是实例化一次(并且所有测试方法都从同一个实例运行)还是类是每个测试方法实例化一次

以上是关于PHPUnit 运行程序的主要内容,如果未能解决你的问题,请参考以下文章

Laravel PHPUnit测试运行产生异常创建调度程序后无法设置默认工厂

如何从 Windows 命令提示符在 Laravel 中运行 PHPUnit

PHPUnit测试失败

PhpStorm 中的 PHPUnit 引导程序

Laravel 5:PHPUnit 和没有可用的代码覆盖驱动程序

PHPUnit错误未定义变量