我需要测试我使用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