资讯专栏INFORMATION COLUMN

PHPUnit实践一(初识)

weapon / 2292人阅读

摘要:另外一些单元测试可能会测试负向路径的场景,保证代码不仅会产生错误,而且是预期的错误。是一个面向程序员的测试框架,这是一个的体系结构的单元测试框架。

本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架

前置

日常我们的普通用到的测试:

代码直接echo,debug等方法测试 -> 跟踪细节断点型测试

log日志辅助测试 -> 跟踪细节断点型测试

辅助工具,postman之类的做请求类测试->请求类测试

浏览器直接测试->浏览器测试

单元测试

单元测试是针对程序的最小单元来进行正确性检验的测试工作,程序单元就是应用的最小可测试部件,一个单元可能是单个程序,类,对象,方法等

单元测试是用来测试包或者程序的一部分代码或者一组代码的函数。测试的目的是确认目标代码在给定的场景下,有没有按照期望工作。

一个场景是正向路经测试,就是在正常执行的情况下,保证代码不产生错误的测试。这种测试可以用来确认代码可以成功地向数据库中插入一条工作记录。

另外一些单元测试可能会测试负向路径的场景,保证代码不仅会产生错误,而且是预期的错误。

这种场景下的测试可能是对数据库进行查询时没有找到任何结果,或者对数据库做了无效的更新。

在这两种情况下,测试都要验证确实产生了错误,且产生的是预期的错误。总之,不管如何调用或者执行代码,所写的代码行为都是可预期的

优点或改善解决问题

减少bug

通过运行单元测试可以直接测试各个功能的正确性,有bug可以直接发现并解决,如果要等到跟其他的功能对接,进行连贯测试,测试比较麻烦,而且bug不能及早的发现并解决

快速定位bug

如果是web项目的某一个功能,平常我们定位bug可能是页面输入值,后台断点,一步一步的需要bug位置,如果有编写单元测试,则可以直接修改数据,运行单元测试即可,快速有限

提高代码质量

如果每一个部件都是完美的,那么组合起来肯定也是完美的。整体代码质量就得到了保障

减少调试时间

当不知问题所在的时候,可能需要各种调试与运行,而如果所有的都有编写单元测试,那么可以直接运行单元测试,就能定位问题所在位置。

PHPUnit

PHPUnit是一个面向PHP程序员的测试框架,这是一个xUnit的体系结构的单元测试框架。

版本
主版本 初始版本 PHP兼容性 支持 后台框架对应版本
PHPUnit 8 2019年2月1日 PHP 7.2, PHP 7.3, PHP 7.4 在2021年2月5日结束支持
PHPUnit 7 2018年2月2日 PHP 7.1, PHP 7.2, PHP 7.3 在2020年2月7日结束支持
PHPUnit 6 2017年2月3日 PHP 7.0, PHP 7.1, PHP 7.2 在2019年2月1日结束支持 *
PHPUnit 5 2015年10月2日 PHP 5.6, PHP 7.0, PHP 7.1 在2018年2月2日结束支持
PHPUnit 4 2014年3月7日 PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6 在2017年2月3日结束支持
你的第一个单元测试demo 目录结构
tests
├── ExampleTest.php 测试用例
└── TestCase.php Lumen自带测试基类,继承PHPunit
代码
assertTrue(true);
    }
    
    /**
     * 测试断言失败
     *
     * @return void
     */
    public function testFailure()
    {
        $this->assertTrue(false);
    }
    
    /**
     * 测试不加断言,risky.
     *
     * @return void
     */
    public function testRisky()
    {
    }
}
运行
../vendor/bin/phpunit ExampleTest.php
输出
PHPUnit 6.5.9 by Sebastian Bergmann and contributors.

.FR                                                                 3 / 3 (100%)

Time: 902 ms, Memory: 10.00MB

There was 1 failure:

1) ExampleTest::testFailure
Failed asserting that false is true.

/web/www/wpt/gt-api/tests/ExampleTest.php:22

--

There was 1 risky test:

1) ExampleTest::testRisky
This test did not perform any assertions

FAILURES!
Tests: 3, Assertions: 2, Failures: 1, Risky: 1.
说明
3个测试方法,2个断言 一个断言失败,一个测试方法无断言
输出标识说明
.
当测试成功时输出。

F
当测试方法运行过程中一个断言失败时输出。

E
当测试方法运行过程中产生一个错误时输出。

R
当测试被标记为有风险时输出。

S
当测试被跳过时输出。

I
当测试被标记为不完整或未实现时输出。
参考

PHPUnit 6.5 官方文档

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30054.html

相关文章

  • PHPUnit实践初识

    摘要:另外一些单元测试可能会测试负向路径的场景,保证代码不仅会产生错误,而且是预期的错误。是一个面向程序员的测试框架,这是一个的体系结构的单元测试框架。 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我们的普通用到的测试: 代码直接echo,debug等方法测试 -> 跟踪细节断点型测试 log日志辅助测试 -> 跟踪细节断点型测试 ...

    hss01248 评论0 收藏0
  • PHPUnit实践三(构建模块化的测试单元)

    摘要:本系列教程所有的测试基于版本,框架目录结构模块下的目录是符合的模块结构的如等是模块目录下的结构目录如果有自己的目录同级分配即可,如我这里的整体结构重写过基类的测试基类,用于我们用这个基类做测试基类,后续会说明自动加载文件测试用例目录某测试模 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 目录结构 模块下的目录是符合Lumen的模块结构的如:...

    goji 评论0 收藏0
  • PHPUnit实践二(生命周期)

    摘要:另外,与模板方法将分别在测试用例类的第一个测试运行之前和测试用例类的最后一个测试运行之后调用。 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 PHPUnit测试一个文件类的生命周期 showImg(https://segmentfault.com/img/bVbnXJj?w=1330&h=1186); 理解PHPUnit加载机制(Lumen...

    jemygraw 评论0 收藏0
  • PHPUnit实践二(生命周期)

    摘要:另外,与模板方法将分别在测试用例类的第一个测试运行之前和测试用例类的最后一个测试运行之后调用。 本系列教程所有的PHPUnit测试基于PHPUnit6.5.9版本,Lumen 5.5框架 PHPUnit测试一个文件类的生命周期 showImg(https://segmentfault.com/img/bVbnXJj?w=1330&h=1186); 理解PHPUnit加载机制(Lumen...

    617035918 评论0 收藏0
  • phpunit PHP单元测试的利器

    摘要:是的单元测试框架。单元测试在软件开发中越来越受到重视,测试先行编程极限编程和测试驱动开发在实践中被广泛。利用单元测试,也可以实现契约式设计。现在第二个测试也能通过啦你也可以使用契约式设计的风格,只需使用类提供的静态断言方法编写契约条件。 PHPUnit是PHP的单元测试框架。单元测试在软件开发中越来越受到重视,测试先行编程、极限编程和测试驱动开发在实践中被广泛。利用单元测试,也可以实现...

    wyk1184 评论0 收藏0

发表评论

0条评论

weapon

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<