您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
phpunit数据库测试-优化数据库连接
发布时间:2021-09-26 22:19:53编辑:雪饮阅读()
测试过程中频繁的连接数据库会给数据库造成压力,造成性能的损耗。
即便只是测试,而不是正式使用,优化数据库连接可以提高测试的效率。
以下是一个基于pdo连接sqlite内存模式数据库连接的一种优化方式,其中有对这个抽象类派生了一个类,虽然派生类没有任何方法,但是为了防止运行后报错,所以抽象类必须要有一个派生类来实现。至少在phpunit运行过程中。至少在这里是这样的。这个例子是官方给的,我运行报错于是补充了getDataSet的实现以及派生类的实现。
MyAppTestsDatabaseTestCase.php:
<?php
use PHPUnit\Framework\TestCase;
use PHPUnit\DbUnit\TestCaseTrait;
abstract class MyAppTestsDatabaseTestCase extends TestCase
{
use TestCaseTrait;
static private $pdo = null;
private $conn = null;
final public function getConnection()
{
if ($this->conn === null) {
if (self::$pdo == null) {
self::$pdo = new PDO('sqlite::memory:');
}
$this->conn = $this->createDefaultDBConnection(self::$pdo, ':memory:');
}
return $this->conn;
}
public function getDataSet()
{
return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/guestbook-seed.xml');
}
}
class MyAppTestsDatabaseTestCaseImplement extends MyAppTestsDatabaseTestCase{}
use PHPUnit\Framework\TestCase;
use PHPUnit\DbUnit\TestCaseTrait;
abstract class MyAppTestsDatabaseTestCase extends TestCase
{
use TestCaseTrait;
static private $pdo = null;
private $conn = null;
final public function getConnection()
{
if ($this->conn === null) {
if (self::$pdo == null) {
self::$pdo = new PDO('sqlite::memory:');
}
$this->conn = $this->createDefaultDBConnection(self::$pdo, ':memory:');
}
return $this->conn;
}
public function getDataSet()
{
return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/guestbook-seed.xml');
}
}
class MyAppTestsDatabaseTestCaseImplement extends MyAppTestsDatabaseTestCase{}
运行结果如:
C:\Users\Administrator>D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe C:\Users\Administrator\PhpstormProjects\untitled\vendor\phpunit\phpunit\phpunit C:\Users\Administrator\PhpstormProjects\untitled\organizing\tests\MyAppTestsDatabaseTestCase.php
PHPUnit 7.5.20 by Sebastian Bergmann and contributors.
W 1 / 1 (100%)
Time: 54 ms, Memory: 4.00 MB
There was 1 warning:
1) Warning
No tests found in class "MyAppTestsDatabaseTestCaseImplement".
WARNINGS!
Tests: 1, Assertions: 0, Warnings: 1.
官网文档参考:https://phpunit.de/manual/6.5/en/database.html
关键字词:phpunit,数据库连接