zoukankan      html  css  js  c++  java
  • PHP教程:PHPUnit学习笔记(二)PHPUnit基本用法

    上篇日记中我介绍了phpunit的配置方法,今天就开始介绍如何用PHPUnit来编写测试用例,下面我来引入一个测试PHP数组操作的测试用 例,这个例子会给你展示PHPUnit常规的用法和测试用例编写的步骤。当前目标主要是对PHPUnit的基本使用有一个大概的了解,类似开发程序教程中 的Hello World程序,知道程序怎么写,怎么去运行。

    编写一个栈测试的例子的步骤:

    1. 定义一个测试类StackTest保存于StackTest.php中

    2. 这个类继承于PHPUnit_Framework_TestCase

    3. 定义类中的测试方法,类的所有的测试用例方法需要用test开头,当然,你也可以在使用@test注释来定义一个名字不为test开头的方法为测试方法

    4. 在这些测试方法中,我们需要使用断言方法(assertion methods)如assertEquals()来断言实际传入的参数和期待的参数的值相同来达到测试的目的.

    下面我们来看代码:

    例子代码中我使用断言方法assertEquals来断言我期待$stack相关的值

    注意代码中高亮的方法indexEquals,它并没有使用test开头,但是我在注释中增加了@test标签,那么phpunit依然会将其作为一个测试方法运行,下面我们来运行方法和运行结果

    进入命令行,使用phpunit StackTest来执行StackTest.php的测试,运行结果如下:

    .F 表示执行完毕且出现断言失败

    Time: 0 seconds, Memory: 5.50Mb

    表示执行时间为0秒,使用5.50MB内存

    There was 1 failure:

    这里有一个失败

    1) StackTest::indexEuqals

    StackTest类的indexEquals方法


    Failed asserting that <integer:1> matches expected <integer:2>.

    断言值为2但是传入的值却是1

    /home/colt/workspace/PHP/test/StackTest.php:28

    FAILURES!
    Tests: 2, Assertions: 6, Failures: 1.

    执行了2个测试,共6个断言,失败1

    由于我们在indexEquals断言$stack索引0的值为2,但是实际上值的是1,所以这个断言没有通过测试并向我们报告了失败。

    本例子通过一个简单易懂的测试类解开测试的神秘面纱:

    通俗的讲,单元测试就是在测试用例类中,定义一系列的测试方法,在方法中使用断言(assert)来测试你程序中的相关函数、类、接口、过程的执行 结果是否和你预期的是一样的,如果某个部分的执行结果没有与你期待的结果相同,PHPUnit就会向你报告问题,你也可以方便的根据报告确认和修复程序中 的Bug。针对你的程序写好详细的完整单元测试,你就不用每次完成一个新功能后逐个的测试你软件的所有功能,而且在程序发布之前,你至少可以通过测试消灭 大部分的内部逻辑Bug和缺陷。同样,你在之后的维护开发中,如果在某个功能的修改中不小心改坏了与其相关连的其他模块,那么先前完善的单元测试也会向你 报告出相关的问题让你及时发现和修复问题。

    本篇笔记完结,下篇我将继续介绍使用PHPUnit编写测试用例的进阶知识.

  • 相关阅读:
    u-boot 用哪个lds链接脚本
    u-boot-2019.07 移植步骤
    u-boot-2016.09 make编译过程分析(二)
    grep 命令搜索 带空格的字符
    uboot if_changed函数
    2019保险规划 待完善
    MongoDB Capped集合
    并发编程——详解 AQS CLH 锁
    Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
    观察者模式
  • 原文地址:https://www.cnblogs.com/Jerry-blog/p/4988454.html
Copyright © 2011-2022 走看看