您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
phpunit使用setUpBeforeClass与tearDownAfterClass实现基境共享
发布时间:2021-09-20 10:58:22编辑:雪饮阅读()
前面有了解到setUpBeforeClass是在一个测试类的第一个测试方法之前就先运行的,并且该方法并不会像是setUp一样,每个方法运行之前都运行,该方法仅在这个测试类运行时候运行一次,与之对应的tearDownAfterClass方法则在该测试类运行结束后再执行的方法。
就有点像是构造与析构方法了。
那么像是setup那种每个测试方法之前都要运行一次,基于setup可以做些基境数据,但是这样做的基境数据性能损耗还是很大,比如说一个数据库的连接,每次都去用setup去创建岂不是很浪费。
所以可以借助setUpBeforeClass创建数据库连接,而借助tearDownAfterClass销毁数据库连接。
DatabaseTest.php:
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class DatabaseTest extends TestCase
{
private static $dbh;
public static function setUpBeforeClass(): void
{
/*
* SQLite数据库通常存储在单个普通磁盘文件中。但是,在某些情况下,数据库可能存储在内存中。
* 强制SQLite数据库单纯的存在于内存中的最常用方法是使用特殊文件名“:memory:” 打开数据库。换句话说,
* 不是将真实磁盘文件的名称传递给sqlite3_open(),sqlite3_open16()或 sqlite3_open_v2()函数之一,而是传入字符串“:memory:”。
* */
self::$dbh = new PDO('sqlite::memory:');
}
public static function tearDownAfterClass(): void
{
self::$dbh = null;
}
public function testOne(): void
{
var_dump(self::$dbh);
$this->assertTrue(true);
}
}
use PHPUnit\Framework\TestCase;
final class DatabaseTest extends TestCase
{
private static $dbh;
public static function setUpBeforeClass(): void
{
/*
* SQLite数据库通常存储在单个普通磁盘文件中。但是,在某些情况下,数据库可能存储在内存中。
* 强制SQLite数据库单纯的存在于内存中的最常用方法是使用特殊文件名“:memory:” 打开数据库。换句话说,
* 不是将真实磁盘文件的名称传递给sqlite3_open(),sqlite3_open16()或 sqlite3_open_v2()函数之一,而是传入字符串“:memory:”。
* */
self::$dbh = new PDO('sqlite::memory:');
}
public static function tearDownAfterClass(): void
{
self::$dbh = null;
}
public function testOne(): void
{
var_dump(self::$dbh);
$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\DatabaseTest.php
PHPUnit 9.5.8 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)C:\Users\Administrator\PhpstormProjects\untitled\DatabaseTest.php:24:
class PDO#351 (0) {
}
Time: 00:00.003, Memory: 20.00 MB
OK (1 test, 1 assertion)
关键字词:phpunit,setUpBeforeClass,tearDownAfterClass,基境共享
上一篇:win10安装sqlite
下一篇:phpunit组织测试
相关文章
- phpunit生命周期(钩子)assertPreConditions、assertPo
- phpunit类方法运行生命周期
- phpunit基境-setUp
- phpunit使用testdox的testdox-text与testdox-html参数
- phpunit敏捷文档testdox的带参情况
- phpunit使用testdox情况下多个测试方法的名字互相之间
- phpunit中filter的使用(匹配命名空间、类、方法以及数
- phpunit中expectException的使用
- phpunit中NOTICE、WARNING、ERROR的断言支持
- phpunit中expectDeprecationMessageMatches的使用