PHPUnit单元测试

参考连接:(15条消息) 命令行执行phpunit 类找不到_PHPUnit 单元测试都不会的, 没法写出高质量的代码..._weixin_39567013的博客-CSDN博客

具体代码:phpunit测试代码: phpunit测试代码 (gitee.com)

目前还有bug未解决(放在文章末尾,估计是配置文件出错)

一、规范 

PHPUnit规定了一个测试类必须遵守如下的规定:

单元测试类必须以Test结尾,必须继承 \PHPUnit\Framework\TestCas基类。

每个测试函数必须以test开头。

还有一些良好的编码习惯可以参考:

单元测试代码都放在test目录下。

每个单元测试类都以被测试的类名开头。例如被测试类为CalculateService,那么单元测试类应该为CalculateServiceTest。

每个单元测试函数应该为被测试函数名结尾。例如被测试函数为 abs,那么单元测试函数应该为 testAbs。

二、如何安装

可以通过composer进行安装

$ composer require phpunit/phpunit

在 composer.json 中会出现如下依赖

{

    "require": {

        "phpunit/phpunit": "^7.5"

    }

}

三、编写代码测试

phpunit常用断言方法

更多断言方法详见 phpunit 官方文档,基本都能顾名思义。


如何运行单元测试

# 运行全部测试

phpunit

# 运行某个分组的单元测试

phpunit --group GroupA

# 运行指定测试类的所有测试用例

phpunit tests/xxxxTest.php

# 运行所有测试类中满足filter条件的方法

phpunit --filter xxxFunc

# 运行某个测试类中满足filter条件的

phpunit.xml 是什么

phpunit.xml 是一个XML格式的配置文件,能够配置单元测试中的一些默认行为,比如环境变量、启动文件、日志记录等,官方文档如下 https://phpunit.readthedocs.io/zh_CN/latest/configuration.html

如何查看代码覆盖率

执行 phpunit 之后,根据  中的配置,会自动生成代码覆盖率信息至 ./tests/codeCoverage/ ,打开其中 index.html 即可查看覆盖率信息。

举个栗子

以一个简单的斐波拉契数列计算函数为例

斐波那契数列由0和1开始,之后的斐波那契系数就是由之前的两数相加而得出。

输入输出分析

根据函数特点,我们可以通过验证已知情况和特殊情况的方式去验证,经过分析结果如下

正常输入的已知情况


异常输入的情况处理

处理为0,或者抛出异常均可

编写测试类

tests/FunctionTest.php

函数功能实现

functions.php

function fibon($a)

{

    if (!is_int($a)) {

        return 0;

    }

    if ($a <= 0) {

        return 0;

    } elseif ($a == 1) {

        return 1;

    } else {

        return fibon($a - 1) + fibon($a - 2);

    }

}

运行结果

你可能感兴趣的:(PHPUnit单元测试)