利用php创建test数据库,PHP MySQL功能单元测试

我需要测试我使用PHP 5创建的许多函数,这些函数执行我的Web应用程序所需的数据库CRUD类型操作(SELECT,UPDATE,INSERT,DELETE).

我一直在寻找PHP单元测试套件,例如Simple Test和PHP Unit,它们似乎提供了我需要的东西但是我不确定我是如何实现这一点的,因为等价分区和边界分析并不是那么清楚.我只需要输入不同的变量并改变它吗?这似乎毫无意义,因为不同的字符串可能不一定有任何区别.

任何有关这方面的指导都会有所帮助,因为我之前没有遇到过.

解决方法:

如果您正在测试PHP代码和MySQL数据库之间的交互,那么您正在执行集成测试,而不是单元测试.

以下是使用Enhance PHP framework进行集成测试的一些示例,它测试了一个保存和检索租户对象的存储库类.

它不是针对预先填充的数据库运行,而是在完全空的数据库上运行,并在使用简单的表助手时创建和销毁表.这消除了对测试数据库中处于正确状态的特定数据的依赖性,这很难保持一致.

class TenantRepositoryTestFixture extends EnhanceTestFixture {

private $Target;

public function SetUp() {

$tables = new TableHelper();

$tables->CreateTenantTable();

$this->Target = Enhance::GetCodeCoverageWrapper('TenantRepository');

}

public function TearDown() {

$tables = new TableHelper();

$tables->DropTenantTable();

}

public function SaveWithNewTenantExpectSavedTest() {

$tenant = new Tenant();

$tenant->Name = 'test';

$saved = $this->Target->Save($tenant);

$result = $this->Target->GetById($saved->Id);

Assert::AreNotIdentical(0, $result->Id);

Assert::AreIdentical($tenant->Name, $result->Name);

}

public function SaveWithExistingTenantExpectSavedTest() {

$tenant = new Tenant();

$tenant->Name = 'test';

$saved = $this->Target->Save($tenant);

$saved->Name = 'changed';

$saved = $this->Target->Save($saved);

$result = $this->Target->GetById($saved->Id);

Assert::AreIdentical($saved->Id, $result->Id);

Assert::AreIdentical($saved->Name, $result->Name);

}

}

?>

标签:php,mysql,unit-testing,phpunit,simpletest

来源: https://codeday.me/bug/20190626/1296529.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值