从PHPUnit开始编写单元测试


从PHPUnit开始编写单元测试

背景

在项目中为什么要做测试呢?

即时是很小规模的项目开发也需要数小时的辛苦编程。在开发过程中,应用代码中或多或少都会存在一些大大小小的问题,开发者往往会尝试在开发过程中解决这些问题,以便顺利上线。

但问题是在未经完整测试的情况下,没有一种方式可以确保最终上线代码没有任何问题,此外也没有办法确保修复老问题的代码不会引起新问题。

为了解决上述问题,我们才需要在开发过程中引入测试流程,并将其作为日常开发流程中不可或缺的一部分,从而确保代码质量。

在现代软件开发流程中,测试驱动开发、持续交付、持续集成这些概念都将测试作为开发流程的一部分,要求我们在软件开发的一开始,就要设计好相关的测试方法,从而让代码更加易于扩展、迭代和维护。

分类

常见的测试主要包括单元测试和功能测试

单元测试

单元测试是一种通过编写测试代码来确认函数、类和方法是否以我们预期的方式来工作,单元测试会贯穿整个项目的开发周期。通过检查各个函数和方法的输入输出,就可以保证代码内部的逻辑已经正确执行。

功能测试

功能测试是通过使用工具来生成自动化的测试用例,然后再真实的系统上运行,而不是单元测试中简单的验证单个模块的正确性。这些工具会使用有代表性的真实数据来模拟真实用户的行为从而验证系统的正确性。

PHPUnit简介和安装配置

PHP 中,最著名的单元测试框架就是 PHPUnit 了,下面将以 PHPUnit 为例,介绍如何在项目中进行单元测试

安装

如果在 Laravel 项目中,PHPUnit已经默认集成了,如果是在其他项目中使用,可以通过composer进行安装

composer require --dev phpunit/phpunit ^7

由于不会在线上环境进行测试,所以使用 --dev 表示仅在本地安装

编写一个测试用例

单元测试的基本约定

  • 测试文件名需要以 Test 作为后缀,比如要测试 Activity.php 文件,则对应的测试文件名为 ActivityTest.php
  • 测试方法名需要以 test 作为前缀,比如需要测试的方法为 getInfo ,则对应的测试方法名为 testGetInfo,此外可以通过 @test注解来声明一个测试方法。
  • 所有测试方法必须是 public
  • 所有的测试类都继承自 PHPUnit\Framework\TestCase

编写简单测试用例

首先,来创建一个简单的测试用例,将其命名为 ActivityTest.php,这仅仅是为了写测试用例而写,不是对任何业务代码做测试。

简单测试用例

然后我们就可以运行 vendor/bin/phpunit 命令来对刚刚的代码进行测试

测试命令

通过编排文件 phpunit.xml, PHPUnit 会去 tests/Unit目录中查找测试用例进行测试,测试通过则显示绿色的高亮文本,测试不通过则显示红色的警告文本。


文章作者: 我若为侠
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 我若为侠 !
 上一篇
PHP-FPM调优 PHP-FPM调优
PHP-FPM调优PHP的几种运行方式PHP 本身是一个php代码的脚本执行程序,他有以下几种运行方式: 模块加载运行方式(Apache) CGI运行方式 (Apache) FastCGI运行方式 (几乎通用) ISAPI运行方式(Win
下一篇 
23种设计模式-备忘录模式 23种设计模式-备忘录模式
23种设计模式-备忘录模式概述又称快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态 结构备忘录模式有以下角色: 发起人(Originator)角色:记录当
  目录