当前位置:网站首页>laravel之phpunit单元测试
laravel之phpunit单元测试
2022-08-09 18:36:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
1,什么是单元测试?
PHPUnit 是一个用PHP编程语言开发的开源软件,是一个单元测试框架。PHPUnit由Sebastian Bergmann创建,源于Kent Beck的SUnit,是xUnit家族的框架之一。PHPUnit中国官网
2,为什么要使用单元测试?
单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。单元测试可以使用任意一段已经写好的测试代码,也可以使用一些已经存在的测试框架,比如JUnit、PHPUnit或者Cantata++,单元测试框架提供了一系列共同、有用的功能来帮助人们编写自动化的检测单元,例如检查一个实际的值是否符合我们期望的值的断言。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。使用 phpunit 进行自动测试,会使你的代码更健壮,减少后期维护的成本,也是一种比较标准的规范,现如今流行的PHP框架都带了单元测试,如Laraval,Symfony,Yii2等,单元测试已经成了标配。
3,phpunit使用
如果是windows系统,配置环境变量。
D:\WWW\laravel\项目\vendor\bin;有如下显示说明配置成功:
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.12 with Xdebug 2.4.1
Configuration: D:\WWW\laravel\项目名称\phpunit.xml执行命令 phpunit tests/ExampleTest.php
测试案例:
public function testExample3()
{
$stack = []; //新建数组$stack,给它一个数组,看看输出的结果是否和我们预期的一致,判断是否一致就要开始断言了~~
$this->assertEquals(0, count($stack)); //count()提取数组的长度,断言0和数组的长度相等,相等的话测试成功
array_push($stack, 'foo'); //array_push向数组尾部插入元素'foo'
$this->assertEquals('foo', $stack[count($stack) - 1]);
$this->assertEquals(1, count($stack));
$this->assertEquals('foo', array_pop($stack)); //array_pop()删除数组的最后一个元素,返回值是被删除的元素
$this->assertEquals(0,count($stack) ); //判断括号内右边的值是否和左边的一致,左边的值是我们的预期输出
}执行结果:
总共有1个测试案例,1个测试成功,5个测试单元,总共花了时间712毫秒和内存8M,·代表测试成功
. 成功时输出
F 运行过程中一个断言失败时输出
E 运行过程中产生一个错误时输出
R 被标记为有风险时输出
S 被跳过时输出
I 被标记为不完整或未实现时输出
w 运行过程中产生一个警告4,常用的PHPunit断言方法
assertEquals() 判断是否相等
assertContains()判断输入是否包含指定的值
assertInstanceOf()
assertTrue/assertFalse 断言是否为真值还是假
assertEquals 判断输出是否和预期的相等
assertGreaterThan 断言结果是否大于某个值,同样的也有LessThan 小于
GreaterThanOrEqual 大于等于
LessThanOrEqual 小于等于
assertType 判断是否属于指定类型
assertNull 判断是否为空值
assertFileExists 判断文件是否存在
assertRegExp 根据正则表达式判断5,phpstorm 配置,运行 phpunit
1,检查php版本
2,setting里设置自动加载组件文件路径
3,在要测试的单元中,如图操作
4,创建测试单元
5,会在tests下生成一个测试类
6,在这里可以做测试了,测试结果如下。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105886.html原文链接:https://javaforall.cn
边栏推荐
- Queue topic: Implementing stacks with queues
- 【分享】入驻集简云开发者平台,如何使用Session Auth配置授权?
- golang单元测试:testing包的基本使用
- 电商项目架构图
- IDEA tools commonly used configuration
- pytest框架之mark标记功能详细介绍
- 华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
- Samsung's flagship discount is 1,800, Apple's discount is over 1,000, and the domestic flagship is only reduced by 500 to send beggars
- 毕昇编译器优化:Lazy Code Motion
- Flume (六) --------- Flume 数据流监控
猜你喜欢
![[免费专栏] Android安全之ZIP文件目录遍历漏洞](/img/11/c9116562b0ce57205e73fc442874d3.png)
[免费专栏] Android安全之ZIP文件目录遍历漏洞
![[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程](/img/7b/a036ac664c7e27ed7d87e7ee18c05d.png)
[免费专栏] Android安全之Xposed插件开发【从零手把手带】教程

这年头还不来尝试线稿图视频??

VIT transformer详解

鲜花线上销售管理系统的设计与实现

Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem

基于CC2530 E18-MS1-PCB Zigbee DIY作品

没有 accept,建立 TCP 连接,可以吗?

毕昇编译器优化:Lazy Code Motion

IS31FL3737B 通用12×12 LED驱动器 I2C 42mA 40QFN
随机推荐
Tims中国上市进入倒计时:年亏3.8亿 估值降至14亿美元
ebook下载 | 《 企业高管IT战略指南——企业为何要落地DevOps》
华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
2022.08.08_每日一题
双屏协作更高效,华硕灵耀X 双屏Pro 2022创作体验再升级
AWK使用
hdu 2647 Reward(拓扑排序)
How to suppress alarm storms?
毕昇编译器优化:Lazy Code Motion
2022.08.05_每日一题
Why is the data of maxcompute garbled when imported into mysql?The table of mysql is the encoding of udf8mb4
21天学习挑战赛--第四天打卡(横竖屏切换)
Go-Excelize API源码阅读(五)—— Close()
grafana对接本地ldap
重庆智博会|2022智博会到底有哪些看点?拭目以待
典型的数据仓库模型实施过程详解
NetCore路由的Endpoint模式
全自动化机器学习建模!效果吊打初级炼丹师!
Samsung's flagship discount is 1,800, Apple's discount is over 1,000, and the domestic flagship is only reduced by 500 to send beggars
华为云创新中心助力启泰智能 补齐中小模具企业数字化能力短板