您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
phpunit生命周期(钩子)assertPreConditions、assertPostConditions和onNotSuccessfulTest
发布时间:2021-09-19 19:44:54编辑:雪饮阅读()
前番了解了setUpBeforeClass() 与 tearDownAfterClass()以及setUp与tearDown。
那么接下来了解下assertPreConditions是在断言前调用,也就是在某个测试方法之前调用,严格来说是在setUp之后测试方法之前调用,而同样的有对应的assertPostConditions是断言后调用,也就是在测试方法之后调用,严格来说是在测试方法之后并且在tearDown之前调用(如果某个测试断言失败则不执行assertPostConditions,取而代之的是onNotSuccessfulTest于assertPostConditions的执行时机进行执行)。
那么具体的实例:
StackTest.php:
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class StackTest extends TestCase
{
protected function setUp(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
protected function tearDown(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
public static function setUpBeforeClass(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
public static function tearDownAfterClass(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
//断言前调用
protected function assertPreConditions(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
//断言后调用
protected function assertPostConditions(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
protected function onNotSuccessfulTest(Throwable $t): void
{
//某个测试断言不正确就触发一次该方法
fwrite(STDOUT, __METHOD__ . "\n");
throw $t;
}
public function testOne(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
$this->assertTrue(false);
}
public function testTwo(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
$this->assertTrue(true);
}
}
use PHPUnit\Framework\TestCase;
final class StackTest extends TestCase
{
protected function setUp(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
protected function tearDown(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
public static function setUpBeforeClass(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
public static function tearDownAfterClass(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
//断言前调用
protected function assertPreConditions(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
//断言后调用
protected function assertPostConditions(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
}
protected function onNotSuccessfulTest(Throwable $t): void
{
//某个测试断言不正确就触发一次该方法
fwrite(STDOUT, __METHOD__ . "\n");
throw $t;
}
public function testOne(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
$this->assertTrue(false);
}
public function testTwo(): void
{
fwrite(STDOUT, __METHOD__ . "\n");
$this->assertTrue(true);
}
}
运行效果如:
C:\Users\Administrator>D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar C:\Users\Administrator\PhpstormProjects\untitled\StackTest.php
PHPUnit 9.5.8 by Sebastian Bergmann and contributors.
StackTest::setUpBeforeClass
StackTest::setUp
StackTest::assertPreConditions
StackTest::testOne
StackTest::tearDown
StackTest::onNotSuccessfulTest
FStackTest::setUp
StackTest::assertPreConditions
StackTest::testTwo
StackTest::assertPostConditions
StackTest::tearDown
. 2 / 2 (100%)StackTest::tearDownAfterClass
Time: 00:00.016, Memory: 20.00 MB
There was 1 failure:
1) StackTest::testOne
Failed asserting that false is true.
C:\Users\Administrator\PhpstormProjects\untitled\StackTest.php:37
FAILURES!
Tests: 2, Assertions: 2, Failures: 1.
![onNotSuccessfulTest.png](/d/file/manshenghuo/chengxurensheng/d0ef516cc6a54731f3c03e1b1adc6c6f.png)
关键字词:phpunit,assertPreConditions,assertPostConditions,onNotSuccessfulTest
上一篇:phpunit类方法运行生命周期
下一篇:win10安装sqlite