• 技术文章 >后端开发 >php教程

    php单元测试phpunit的方法及实例

    墨辰丷墨辰丷2018-05-17 11:02:45原创831
    这篇文章主要介绍了php单元测试phpunit,结合实例形式分析了php单元测试phpunit的基本概念、使用方法及相关注意事项,需要的朋友可以参考下

    具体如下:

    何为单元测试:

    指对软件中的基本单元进行测试,如函数、方法等,以检查其返回值或行为是否符合预期;实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文(或者说参数)和环境(比如打桩模拟一些对象)来运行,并监控其行为和返回值,为此我们就需要写出做这件事情的程序代码,这样的代码叫做测试用例,许多测试用例有机结合在一起形成一个整体的测试,又叫做测试套件,被测试的程序代码叫做生产代码。phpunit这个软件就是用来帮助我们写测试用例并进行测试的。

    php的单元测试:phpunit

    在其官网有详细教程,这里介绍一些补充内容。

    首先要明白phpunit软件本身就是由php语言实现,其使用是通过命令行进行的,并不是通过浏览器访问

    明白这一点很重要,许多新人被卡在这里。很基础也很简单,但似乎没怎么被提及

    在官网下载后得到一个phar文件,关于phar归档文件的介绍可参见前面一篇文章PHP开发之归档格式phar文件概念与用法

    请同时下载phpunit使用文档,按照里面的安装方法进行安装,之后在命令行输入以下命令:

    phpunit --help

    如果显示出了帮助信息即安装成功,在命令行当前目录下建立一个测试用例为yunke.php,内容如下:

    <?php
    use PHPUnit\Framework\TestCase;
    class yunkeTest extends TestCase
    {
      public function testPushAndPop()
      {
        $stack = [];
        $this->assertEquals(0, count($stack));
        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack) - 1]);
        $this->assertEquals(1, count($stack));
        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
      }
    }
    ?>

    然后在命令行输入以下命令:

    phpunit yunke

    显示如下内容:

    PHPUnit 5.7.12 by Sebastian Bergmann and contributors.
    .                                  1 / 1 (100%)
    Time: 159 ms, Memory: 7.00MB
    OK (1 test, 5 assertions)

    恭喜,你已经成功运行了一个单元测试,第一行是作者信息(Sebastian Bergmann这个家伙很喜欢署名啊)

    第二行以一个句点开始,表示所有测试成功通过

    你可能会疑惑,上面的php代码是怎么回事呢?

    那就是一个测试用例,简单的测试了一个数组操作,进行单元测试一般通过以下四步:

    1. 针对生产代码类 Class 的测试写在类 ClassTest中。
    2. ClassTest(通常)继承自 PHPUnit\Framework\TestCase
    3. 测试都是命名为 test* 的公用方法。也可以在方法的文档注释块(docblock)中使用 @test 标注将其标记为测试方法。
    4. 在测试方法内,类似于 assertEquals()这样的断言方法用来对实际值与预期值的匹配做出断言判断。

    这里你可能会有几个地方迷惑:

    1、在注释块中使用的标注,php可以通过反射得到,程序可以利用得到的信息进行配置
    2、上列中测试用例代码里面的TestCase类来自哪里?并没有被加载啊?
    上文提到phpunit本身是用php语言写成的,打包成了phar供使用,phar是可执行的,执行时首先执行包里面的存根文件stub

    你可以按照上文云客的另外一篇phar帖子介绍的方法提取还原phpunit.phar包,或者使用phpstorm这样的ide直接打开

    在.phar/stub.php里你将看到存根代码,TestCase类就是在存根代码里面require的“phpunit yunke”这条命令行代码将首先运行phpunit脚本,从存根文件开始执行,然后由phpunit加载测试用例代码

    可以看出程序并不是从测试用例脚本开始执行的,现在明白TestCase类哪里来的了吧

    相关推荐:

    CentOS环境下安装PHPUnit的方法

    phpunit接口自动化测试功能的实现

    实例详解Yaf框架PHPUnit集成测试方法

    php入门到就业线上直播课:查看学习

    以上就是php单元测试phpunit的方法及实例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:phpunit php 实例
    上一篇:php如何利用云片网实现短信验证码功能 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 你知道如何用PHP实现多进程吗• PHP与MySQL连接的方法总结• 工具包分享:PHP实现滑块验证图片• 找到一个编辑器,但是不知道来得到里面的值!求解解决方案• 求解:phpcms模板怎样转码?该怎么解决
    1/1

    PHP中文网