首页 > 开发 > PHP > 正文

使用PHPUnit进行单元测试并生成代码覆盖率报告的方法

2024-05-04 22:40:46
字体:
来源:转载
供稿:网友

安装PHPUnit

使用 Composer 安装 PHPUnit

#查看composer的全局bin目录 将其加入系统 path 路径 方便后续直接运行安装的命令composer global config bin-dir --absolute#全局安装 phpunitcomposer global require --dev phpunit/phpunit#查看版本phpunit --version

使用Composer构建你的项目

我们将新建一个unit项目用于演示单元测试的基本工作流

创建项目结构

mkdir unit && cd unit && mkdir app tests reports#结构如下./├── app #存放业务代码├── reports #存放覆盖率报告└── tests #存放单元测试

使用Composer构建工程

#一路回车即可composer init#注册命名空间vi composer.json...  "autoload": {    "psr-4": {      "App//": "app/",      "Tests//": "tests/"    }  }...#更新命名空间composer dump-autoload#安装 phpunit 组件库composer require --dev phpunit/phpunit

到此我们就完成项目框架的构建,下面开始写业务和测试用例。

编写测试用例

创建文件app/Example.php 这里我为节省排版就不写注释了

<?phpnamespace App;class Example{  private $msg = "hello world";  public function getTrue()  {    return true;  }  public function getFalse()  {    return false;  }  public function setMsg($value)  {    $this->msg = $value;  }  public function getMsg()  {    return $this->msg;  }}

创建相应的测试文件tests/ExampleTest.php

<?phpnamespace Tests;use PHPUnit/Framework/TestCase as BaseTestCase;use App/Example;class ExampleTest extends BaseTestCase{  public function testGetTrue()  {    $example = new Example();    $result = $example->getTrue();    $this->assertTrue($result);  }    public function testGetFalse()  {    $example = new Example();    $result = $example->getFalse();    $this->assertFalse($result);  }    public function testGetMsg()  {    $example = new Example();    $result = $example->getTrue();    // $result is world not big_cat    $this->assertEquals($result, "hello big_cat");  }}

执行单元测试

[root@localhost unit]# phpunit --bootstrap=vendor/autoload.php /tests/PHPUnit 6.5.14 by Sebastian Bergmann and contributors...F                                 3 / 3 (100%)Time: 61 ms, Memory: 4.00MBThere was 1 failure:1) Tests/ExampleTest::testGetMsgFailed asserting that 'hello big_cat' matches expected true./opt/unit/tests/ExampleTest.php:27/root/.config/composer/vendor/phpunit/phpunit/src/TextUI/Command.php:195/root/.config/composer/vendor/phpunit/phpunit/src/TextUI/Command.php:148FAILURES!Tests: 3, Assertions: 3, Failures: 1.

这是一个非常简单的测试用例类,可以看到,执行了共3个测试用例,共3个断言,共1个失败,可以参照

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表