PHPUint 学习笔记

来源:互联网 发布:js怎么判断对象为空 编辑:程序博客网 时间:2024/06/16 21:40

             什么是PHPUint?

          以下内容,摘抄与百度百科

  PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计)。

          这里需要注意的是,PHPUnit是用来对PHP脚本做单元测试的。同时PHPUnit工具本身是也是PHP脚本。


           PHPUnit有什么用呢?

          在敏捷开发中,讲究产品的快速迭代,在迭代的过程中,如何保证产品的稳定。即:新开发的代码,不会影响原有功能。 一个很重要的手段就是做单元测试。PHPUnit就是做单元测试的。


           PHPUnit是如何做单元测试的呢?

           首先:测试对象是PHP的函数。

           其次: 模拟函数的参数,调用被测试代码,然后判断输出是否满足预期。这里注意,错误的预期也是一种预期。

                   PHPUnit的学习方法:

             http://www.phpunit.cn/ 为PHPUnit的官方网站。

             http://www.phpunit.cn/manual/current/zh_cn/installation.html  为PHPUnit的官方手册。 


             罗嗦了很多,开始正文。


一   PHPUnit的安装

               详细步骤可以参考:http://www.phpunit.cn/manual/current/zh_cn/installation.html

               安装之前明确几个概念:

                1. 你需要测试的PHP是哪个版本的, 请下载对应的版本。我选择的是6.1版本,目的是为了测试PHP7

                2.  PHPunit目前可以支持linux系统,也可以支持window系统

                3.  PHPunit存在的方式有很多。 一种是以phar模式(phar是一PHP的一种压缩包)。一种是以源码模式存在。 建议使用源码。 有时间可以学习一下单元测试原理。

                4.  通过composer可以下载源码(如下图,摘抄至PHPunit手册,第一章)


             5. 一个很重的插件,DBUnit.   用途,模拟数据库。有经验的PHPer都知道,代码难免要和数据库打交道。

举个简单的例子,用户登录,一般都要从数据获取用户信息,比较密码。 这个函数如何测试呢? 测试前,我们需要将用户信息导入到数据库,然后再测试。 这个时候就需要用到DBUnit. 下载方法


    安装完成后: 查看版本如下:

           [vagrant@localhost ~]$ phpunit -version
                      PHPUnit 6.1.0 by Sebastian Bergmann and contributors.
                       unrecognized option -- e

二  简单的测试:

     1. 目录树如下:

      src--

           demo1.php

      test--    需要测试的代码

           demo1Test.php. 

      2. 代码如下:

           demo1.php 代码如下:

            简单的登录代码,为了简化,只判断用户名称为guest返回1,表示登录成功

<?php class demo1{public function login(){$userName=$_GET["userName"];$passWord=$_GET["password"];//为简单期间,判断$userName="guest"就返回成功if($userName=="guest"){return 1;}else{return 0;}}}?>

demo2.php

1.测试代码: 

    a. 首先测试类,需要继承TestCase.  注意这里使用的是 PHPUnit6.1 .其他版本的PHPUnit 有可能继承版本不一样。

    b. 然后需要实例化需要测试的类,调用被测试的函数

    c. 使用函数,判断返回值

    d. 注意注释。 1. PHPUnit的注释是有意义的。这里表示login函数需要被测试。 其他注释说明见PHPUnit手册

         2. 注释的写法有讲究。以/** 开头。两个星号,不能多,不能少 。以*/结束

<?phpuse PHPUnit\Framework\TestCase;require dirname(__DIR__)."/src/demo1.php";class demo1Test extends TestCase{/**@test*/public function login(){$_GET["userName"]="guest";$_GET["password"]=1;$demoInstance=new demo1();$result=$demoInstance->login();$this->assertEquals($result,1);}}

开始测试:

[vagrant@localhost demo]$ phpunit testPHPUnit 6.1.0 by Sebastian Bergmann and contributors..                                                                   1 / 1 (100%)Time: 26 ms, Memory: 4.00MBOK (1 test, 1 assertion)

1.其中test为测试的路径,phpunit会自动查找test目录下面的XXXTest.php开始执行,测试/**@test*/标注的或
以testxxx开始的函数。

       今天介绍了,什么是PHPUnit, 以及他的作用。 然后说了如何安装,以及如何测试。 在实际开发中,还会涉及到测试环境的搭建,数据的测试, mocker的使用,覆盖率等知识。 后面章节在叙述。


        因本人水平有限,文章难免存在错误,希望大家批评指正。



            


        

0 0
原创粉丝点击