加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP MySQL功能单元测试

发布时间:2020-12-13 17:06:42 所属栏目:PHP教程 来源:网络整理
导读:我需要测试我使用 PHP 5创建的许多函数,这些函数执行我的Web应用程序所需的数据库CRUD类型操作(SELECT,UPDATE,INSERT,DELETE). 我一直在寻找PHP单元测试套件,例如Simple Test和PHP Unit,它们似乎提供了我需要的东西但是我不确定我是如何实现这一点的,因为等
我需要测试我使用 PHP 5创建的许多函数,这些函数执行我的Web应用程序所需的数据库CRUD类型操作(SELECT,UPDATE,INSERT,DELETE).

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

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

解决方法

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

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

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

<?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);
    }
}
?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读