加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.cn/)- 图像处理、低代码、云通信、数据工具、物联设备!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

什么是PHPUnit?在PHP项目中怎么使用?

发布时间:2022-08-10 11:32:34 所属栏目:PHP教程 来源:互联网
导读:单元测试介绍 单元测试是分别对程序的单元(方法, 函数)进行测试,判断执行结果是否符合预期 单元测试能协助开发者什么? 1.确保单元的执行结果 2.尽早发现程序中的错误 3.修改程序, 更加有信心 PHPUnit PHPUnit 是 PHP 程式语言中最常见的单元测试 (unit tes
  单元测试介绍
  单元测试是分别对程序的单元(方法, 函数)进行测试,判断执行结果是否符合预期
 
  单元测试能协助开发者什么?
 
  1.确保单元的执行结果
 
  2.尽早发现程序中的错误
 
  3.修改程序, 更加有信心
 
  PHPUnit
  PHPUnit 是 PHP 程式语言中最常见的单元测试 (unit testing) 框架,PHPUnit 是参考 xUnit 架构利用 PHP 实作出来。
 
  安装PHPUnit
 
 
 
  # 项目中安装
 
  $ composer require --dev phpunit/phpunit
 
   
 
  # 下载到本地
 
  $ wget https://phar.phpunit.de/phpunit-9.phar
 
  使用项目中安装可以在项目中直接运行, 无需太多配置, 将 phar 下载到非项目文件夹, 可以减少项目代码的体积, 我一般采用下载到本地, 然后多个项目公用一个 phpunit.phar, 减少项目体积, 不过需要在 IDE中增加更多配置
 
  配置autoload
 
  添加下面的代码到composer.json PackageName是项目的名称,src是包含PHP class文件的文件夹地址,项目根目录下的子文件夹。
 
 
 
 
 
 
 
 
 
  ...
 
      "autoload": {
 
         "psr-4": {
 
              "PackageName": "src/",
 
              "PackageNameTests": "tests/"
 
          }
 
       },
 
  ...
 
  设置PHPUnit
 
  在phpstorm中 Languages & Frameworks >PHP >Test Frameworks 根据不同的加载方式设置不同的配置
 
  1.png
 
  如果是项目额外加载, 则需要把 phpunit 所在的文件夹作为 library 加入项目, 便于代码提示 Preferences | Languages & Frameworks | PHP , 加入 phpunit 文件夹
 
  2.png
 
  编写PHPUnit测试
 
  针对类 Example 的测试写在类 ExampleTest 中, ExampleTest 继承自 TestCase
 
  对于方法的测试命名为 test* 的公用方法
 
  在测试方法内,类似于 assertEquals() 的断言方法用来对实际值和预期值的匹配做出验证
 
  ArrayTest 用 PHPUnit 测试数组操作
 
 
 
  <?php
 
  use PHPUnitFrameworkTestCase;
 
   
 
  class ArrayTest extends TestCase
 
  {
 
      public function testPushAndPop()
 
      {
 
          $stack = [];
 
          $this->assertCount(0, $stack);
 
   
 
          $stack[] = 'foo';
 
          $this->assertEquals('foo', $stack[count($stack) - 1]);
 
          $this->assertCount(1, $stack);
 
   
 
          $this->assertEquals('foo', array_pop($stack));
 
          $this->assertCount(0, $stack);
 
      }
 
  }
 
  在 IDE 中运行
 
  点击方法名称
  右键测试类
  右键测试文件夹

(编辑:鹰潭站长网)

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

    热点阅读