单元测试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 并不是只要工具支持就可以了,对代码的可测性也是有要求的,否则写起用例将痛苦不堪,这点后续篇幅再来讨论。

相关文章
|
10天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
156 7
性能工具之emqtt-bench BenchMark 测试示例
|
10天前
|
C++
jrtplib开源库系列之一:jrtplib介绍、安装和测试(window 10环境介绍)
关于jrtplib库网上已经有很多介绍,而且目前jrtplib作者已经停止更新(Apr 18, 2020),最新版本为v3.11.2。本系列内容也以该版本进行介绍。 相信你已经对RTP/RTCP协议有一定的了解,并想更深入的了解RTP协议的具体实现,jrtplib就是使用使用C++实现的RTP/RTCP协议。具体标准为RFC3550,如果想仔细阅读原文,但是对英文又有点吃力,可以参考我的博客RTP/RTCP中英文对照,在博客的后面有百度链接,是对RFC3550的中文翻译,可能很多地方不太准确,有些内容是自己添加进去的,希望不会影响你的阅读。
47 0
|
10天前
|
JSON 数据可视化 测试技术
性能测试之Artillery(示例及指标)
性能测试之Artillery(示例及指标)
27 2
|
10天前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
26 1
|
10天前
|
传感器 数据处理
示例三、光照度测试仪
示例三、光照度测试仪
20 1
|
10天前
|
Web App开发 测试技术 Python
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
|
10天前
|
Web App开发 测试技术 C++
Playwright安装与Python集成:探索跨浏览器测试的奇妙世界
Playwright是新兴的跨浏览器测试工具,相比Selenium,它支持Chrome、Firefox、WebKit,执行速度快,选择器更稳定。安装Playwright只需一条`pip install playwright`的命令,随后的`playwright install`会自动添加浏览器,无需处理浏览器驱动问题。这一优势免去了Selenium中匹配驱动的烦恼。文章适合寻求高效自动化测试解决方案的开发者。
18 2
|
10天前
|
网络安全 Docker 容器
测试开发环境下centos7.9下安装docker的minio
测试开发环境下centos7.9下安装docker的minio
28 1
|
10天前
|
JSON 应用服务中间件 Linux
skywalking内部测试服务器安装记录
skywalking内部测试服务器安装记录
14 0
|
10天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
31 0

热门文章

最新文章