laravel之phpunit单元测试

laravel之phpunit单元测试laravel之phpunit单元测试

大家好,又见面了,我是你们的朋友全栈君。

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 根据正则表达式判断

[ Lumen 5.3 文档 ] 更多特性 —— 单元测试

5,phpstorm 配置,运行 phpunit

1,检查php版本

在这里插入图片描述

2,setting里设置自动加载组件文件路径

在这里插入图片描述

3,在要测试的单元中,如图操作

在这里插入图片描述

4,创建测试单元

创建测试单元

5,会在tests下生成一个测试类

在这里插入图片描述

6,在这里可以做测试了,测试结果如下。

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105886.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何用python画心形_用python制作音乐

    如何用python画心形_用python制作音乐用python绘制爱心的基本步骤如下:首先先下载安装好python程序。在我们自己的电脑上找到python的IDLE工具。2.然后打开IDLE,新建一个文件,命名为test1.py。3.接着我们就开始导入turtle库,然后编辑代码。importturtleimporttime#画心形圆弧defhart_arc():foriinrange(200):turtle.right(1)t…

    2025年9月29日
    4
  • Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

    Android事件分发机制完全解析,带你从源码的角度彻底理解(上)转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9097463 其实我一直准备写一篇关于Android事件分发机制的文章,从我的第一篇博客开始,就零零散散在好多地方使用到了Android事件分发的知识。也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView…

    2022年6月5日
    36
  • Vuex实践-mapState和mapGetters

    Vuex实践-mapState和mapGetters一.前言  本文章是vuex系列的最后一篇,主要总结的是如何使用mapState和mapGetters访问vuex中的state和getters。二.多个模块中mapState和mapGetters的使用  上一篇文章《Vuex实践(中)》里面我们总结的就是多模块的内容,所以关于store.js、moduleA.js和moduleB.js的代码保持不变。  在此为了方便观看,我将这…

    2022年6月5日
    31
  • 数组splice_数组concat方法

    数组splice_数组concat方法有三个方法经常会混淆,但是了解它后你会发现很好区分splice方法是数组特有的方法spite方法是字符串特有的方法slice方法是字符串和数组共同都有的方法这里介绍下数组的常用方法数组的splice方法splice()函数用于从当前数组中移除一部分连续的元素。如有必要,还可以在所移除元素的位置上插入一个或多个新的元素。该函数以数组形式返回从当前数组中被移除的元素。该…

    2022年9月25日
    3
  • 常用的DNS列表(亲测可用)

    常用的DNS列表(亲测可用)如果经常遇到这样的问题:浏览器无法打开网站,但是qq、微信是正常使用的,说明DNS有问题。我们知道,默认情况下DNS是自动获取的,通常默认DNS就是路由器,然后由路由器负责向上一级路由查找,但是有时候路由器出现问题就可能造成上面的问题,那么如何一劳永逸的解决上面的问题呢?答案就是修改DNS,在手机、电脑上都可以更改,具体根据机型自行查找资料。以下是一些常用的DNS地址,亲测可用哦~…

    2022年6月9日
    40
  • 使用PyTorch搭建ResNet34网络

    使用PyTorch搭建ResNet34网络ResNet34 网络结构先上图参照 ResNet18 的搭建 由于 34 层和 18 层几乎相同 叠加卷积单元数即可 所以没有写注释 具体可以参考我的 ResNet18 搭建中的注释 ResNet34 的训练部分也可以参照 importtorchi nnasnnfromto nnimportfunc nn Module def init self in channel out chann

    2025年6月8日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号