PHP MySQL功能单元测试

我需要测试我使用PHP 5创建的许多函数,这些函数执行我的Web应用程序所需的数据库CRUD类型操作(SELECT,UPDATE,INSERT,DELETE)。 我一直在寻找PHP单元测试套件,例如Simple Test和PHP Unit,它们似乎提供了我需要的东西但是我不确定我是如何实现这一点的,因为等价分区和边界分析并不是那么清楚。我只需要输入不同的变量并改变它吗?这似乎毫无意义,因为不同的字符串可能不一定有任何区别。 任何有关这方面的指导都会有所帮助,因为我之前没有遇到过。     
已邀请:
如果您正在测试PHP代码和MySQL数据库之间的交互,那么您正在执行集成测试,而不是单元测试。 以下是使用Enhance PHP框架进行集成测试的一些示例,它测试了一个保存和检索Tenant对象的存储库类。 它不是针对预先填充的数据库运行,而是在完全空的数据库上运行,并在使用简单的表助手时创建和销毁表。这消除了对测试数据库中处于正确状态的特定数据的依赖性,这很难保持一致。
<?php
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);
    }
}
?>
    
通常,单元测试的想法是确保,如果进行更改,您只需运行一系列简单的测试即可确保不会破坏现有功能。所以说,你需要覆盖你期望的典型数据,以及边缘/边界情况,可能包括带引号的字符串(以验证它们是否被正确转义),SQL注入攻击(相同) ,空字符串,不同编码的字符串,NULL,布尔值
true
等。每个测试都应该验证,根据您输入的数据,您获得了预期的结果,在这种情况下(分别):插入的转义字符串,转义字符串插入,插入空字符串,转换或抛出不同的编码然后插入,在NULL值上抛出错误,插入字符串'true'等。 我在几年内没有使用过任何一个测试框架,但我记得在PHPUnit中有很好的结果。     

要回复问题请先登录注册