PHPUnit-装置-setUp和tearDown
在本教程中,我们将学习PHPUnit中的装置。
在Hello World Test教程中,我们了解了如何编写基本测试。
我们还看到了使用" assertEquals()"方法。
现在,让我们谈谈PHPUnit中的装置。
什么是夹具(fixture)?
夹具(fixture)是执行测试时应用程序的初始状态。
设置和拆卸
在PHPUnit测试中,我们有setUp()
方法,该方法在每次测试之前都会被调用。
而且我们有tearDown()
方法,该方法在每次测试后都会被调用。
我们使用setUp()方法来初始化变量,打开文件连接等,这将为测试做好准备。
在完成测试后,我们使用tearDown()
方法取消设置变量,关闭文件连接等。
在大多数情况下,我们将比tearDown()
方法更多地使用setUp()
方法。
例
在以下示例中,我们正在测试奇/偶数。
我们的测试方法是testOdd()
和testEven()
。
我们还有在每个测试之前执行的setUp()
方法和在每个测试之后执行的tearDown()
方法。
<?php class OddEvenTest extends PHPUnit_Framework_TestCase { private $number; protected function setUp() { $this->number = 2; } public function testOdd() { $this->number++; $this->assertNotEquals(0, $this->number % 2); } public function testEven() { $this->assertEquals(0, $this->number % 2); } protected function tearDown() { $this->number = null; } }
在上面的代码中,我们有一个私有变量$number。
在setUp()方法中,我们将值2分配给变量$number。
对于奇数测试:
在testOdd()方法内部,我们使用递增运算符++
将$number的值增加1,因此,新值是3。
接下来,我们将检查$number除以的余数。
2使用assertNotEquals()
方法。
AssertNotEquals()方法采用两个参数。
第一个参数是期望值,第二个参数是我们要检查的值。
将3除以2后,我们得到1的余数,该余数不等于0,因此," assertNotEquals()"方法为我们提供了成功的测试结果。
对于均匀测试:
在" testEven()"方法内部,我们正在使用" assertEquals()"方法检查将" $number"除以2的余数。
AssertEquals()方法采用两个参数。
第一个参数是期望值,第二个参数是我们要检查的值。
将2除以2后,我们得到0等于0的余数,因此," assertEquals()"方法为我们提供了成功的测试结果。
在tearDown()
方法中,我们只是将$number
的值设置为null
。
Testing started at 1:42 PM ... PHPUnit 5.7.23 by Sebastian Bergmann and contributors. Method: OddEvenTest::setUp Method: OddEvenTest::testOdd Method: OddEvenTest::tearDown Method: OddEvenTest::setUp Method: OddEvenTest::testEven Method: OddEvenTest::tearDown Time: 64 ms, Memory: 4.00MB OK (2 tests, 2 assertions) Process finished with exit code 0
从上面的输出中,我们可以看到有2个测试并且都成功。
setUpBeforeClass和tearDownAfterClass
在执行第一个测试之前,将调用setUpBeforeClass()方法,在执行最后一个测试之后,将调用tearDownAfterClass()方法。
我们使用这两种方法与所有测试共享设置。
例如,明智的做法是在setUpBeforeClass()方法中获得一次数据库连接,然后在setUp()方法中多次获得连接。
同样,明智的做法是,在" tearDownAfterClass()"方法中仅关闭一次数据库连接,然后在" tearDown()"方法中的每次测试后关闭数据库连接。
因此,基本上,我们只创建一次数据库连接,然后在每次测试中重复使用该连接。
这有助于更快地运行测试。