单元测试PHPUnit初体验之安装与示例

简介: 啥?你是程序员没写过单元测试?呃,好吧。小马这次也是需要支持CI/CD才刚开始强制自我实行。

image.png

啥是PHPUnit

PHP单元测试的框架有很多,比较主流的也就PHPunit。

PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计)。

单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多大型PHP项目的关键工具。这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最后它还可以和Selenium整合来完成大型的自动化集成测试。

安装

PHPUnit有两种安装方式,两种比较简单的方式是:php档案包(phar)和composer。整体上说,在 Windows 下安装 PHAR 和手工在 Windows 下安装 Composer 是一样的过程。我们以composer安装为例。

如果用 Composer 来管理项目的依赖关系,只要在项目的 composer.json 文件中简单地加上对 phpunit/phpunit 的依赖关系即可:
image.png

然后我们去执行安装命令composer update,注意一下,我们这里采用的是非系统级的安装,也就是局部安装非全局安装(关于 composer全局安装和局部安装phpunit),笔者认为两者区别就是需不需要在安装目录bin下去执行phpunit命令。其实要支持全局也比较简单,把bin目录登记到PATH环境变量让命令可以找到其对应的可执行文件即可支持啦。
image.png

经过一杯咖啡的时间,PHPunit安装完了。你也可以phpunit --version测试是否安装成功。

安装完了之后,我们观察一下目录,红色部分为新增的文件。

image.png

image.png

我们再观察,composer安装方式并没有出现phpunit.phar文件。很多情况下php phpunit.phar 命令可用phpunit命令代替,这个后面再讲。

例子

我们要使用PHPunit支持,那就要对IDE软件作对应的配置,这里先不作IDE支持的介绍,大致参考如下;
image.png
image.png

这里配置其实是有缺陷的支持不了直接run文件


我们先不搅合IDE支持,直接上例子。

1、新建文件夹Testcase,编写SayHello.php:
image.png

2、新建测试用例SayHelloTest.php:

image.png

3、最后切换到bin目录,执行我们的测试文件,得到成功的断言结果(可以通俗理解为,继承单元测试框架,实例化需要测试的类并放入框架,使用框架中的断言等测试方法来实现单元测试):
image.png

这里虽然是用IDE但其实还是cmd命名执行


我们看到,参考文章中说:

编写完成后,切换到phpunit.phar所在目录命令行执行:php phpunit.phar Testcase/SayHelloTest.php

但其实我们上面说过,我们并没有phpunit.phar这个文件。找到可执行文件执行vendor/bin/phpunit ../../Testcase/SayHelloTest.php 或者是phpunit.phar命令则在phpunit.phar 所在目录执行php phpunit.phar Testcase/SayHelloTest.php ,然后运行当前的测试文件即可。所以总结一下,只要找到可执行文件,找到需要执行的测试文件目录即可。也就是如果是全局安装,只需要在项目的文件下直接执行 php phpunit.phar 或phpunit即可。

那么既然我们都用上了IDE了并且做了配置了,怎么在IDE直接RUN class文件而不需要cmd下执行命令呢?上面的IDE配置是否有缺陷呢?这个后面后续再讨论。

关于phpunit的安装和简单例子入门就到这里,更多请参看文档。当然要做unit test 并不是只要工具支持就可以了,对代码的可测性也是有要求的,否则写起用例将痛苦不堪,这点后续篇幅再来讨论。

相关文章
|
5月前
|
运维 关系型数据库 MySQL
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
218 86
|
2月前
|
SQL 缓存 关系型数据库
MySQL8.4 Enterprise安装Firewall及测试
MySQL8.4 Enterprise安装Firewall及测试
90 0
|
4月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
133 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
3月前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
5月前
|
弹性计算 Ubuntu Java
OS-Copilot-ubuntu镜像版本的具体测试使用(安装方式有单独注明)
作为一名个人开发者,我主要负责云资源的运维和管理。在使用OS Copilot的过程中,我遇到了一些配置问题,特别是在ECS实例中设置AccessKey时,但最终成功解决了。通过使用OS Copilot的-t/-f/管道功能,我大大提升了效率,减少了命令编写的工作量,特别是在搭建Java运行环境时效果显著。此外,| 功能帮助我快速理解文档,整体体验非常流畅,推荐给其他开发者使用。
134 6
|
5月前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
130 7
|
8月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
206 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
9月前
|
Linux
kickstart自动安装系统 --DHCP 配置及测试
PXE+Kickstart自动安装系统需配置DHCP服务器分配IP。dhcpd.conf示例:设置更新样式、忽略客户端更新、指定下一服务器及启动文件。定义子网、网关、掩码、动态地址池并预留特定MAC地址。重启xinetd、NFS、DHCP服务,确保新服务器与Kickstart服务器在同一网络,避免误装其他机器。注意隔离测试网络以防干扰生产环境。
150 18
|
8月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
2510 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
9月前
|
安全 测试技术 Linux
CentOS7 安装vulhub漏洞测试环境
CentOS7 安装vulhub漏洞测试环境
293 0