加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php单元测试phpunit入门实例方法

发布时间:2022-02-23 19:05:53 所属栏目:PHP教程 来源:互联网
导读:这篇文章提供了一些phpunit官方教程没有提到的信息,帮助初学者快速了解php单元测试,在phpunit官网提供了详细的中文教程,可选多种格式下载. phpunit官网地址:https://phpunit.de/ 何为单元测试: 指对软件中的基本单元进行测试,如函数、方法等,以检查
  这篇文章提供了一些phpunit官方教程没有提到的信息,帮助初学者快速了解php单元测试,在phpunit官网提供了详细的中文教程,可选多种格式下载.
 
  phpunit官网地址:https://phpunit.de/
 
  何为单元测试:
 
  指对软件中的基本单元进行测试,如函数、方法等,以检查其返回值或行为是否符合预期;实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文(或者说参数)和环境(比如打桩模拟一些对象)来运行,并监控其行为和返回值,为此我们就需要写出做这件事情的程序代码,这样的代码叫做测试用例,许多测试用例有机结合在一起形成一个整体的测试,又叫做测试套件,被测试的程序代码叫做生产代码。phpunit这个软件就是用来帮助我们写测试用例并进行测试的。
 
  php的单元测试:phpunit
 
  在其官网有详细教程,这里介绍一些补充内容。
 
  首先要明白phpunit软件本身就是由php语言实现,其使用是通过命令行进行的,并不是通过浏览器访问
  
  如果显示出了帮助信息即安装成功,在命令行当前目录下建立一个测试用例为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));
    } //Cuoxin.com
  }
  ?>
  然后在命令行输入以下命令:
 
  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(通常)继承自 PHPUnitFrameworkTestCase。
 
  3. 测试都是命名为 test* 的公用方法。也可以在方法的文档注释块(docblock)中使用 @test 标注将其标记为测试方法。
 
  
  这里你可能会有几个地方迷惑:
 
  1、在注释块中使用的标注,php可以通过反射得到,程序可以利用得到的信息进行配置
 
  2、上列中测试用例代码里面的TestCase类来自哪里?并没有被加载啊?
 
  上文提到phpunit本身是用php语言写成的,打包成了phar供使用,phar是可执行的,执行时首先执行包里面的存根文件stub
 
  
  可以看出程序并不是从测试用例脚本开始执行的,现在明白TestCase类哪里来的了吧
 
  通过以上内容再配合官网文档,新手应该可以顺利入门了.

(编辑:PHP编程网 - 黄冈站长网)

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

    热点阅读