• PHPUnit简介及使用


    一、PHPUnit是什么?

    1、它是一款轻量级的PHP测试框架,地址:http://www.phpunit.cn

    2、手册:http://www.phpunit.cn/manual/5.7/zh_cn/installation.html

    二、为什么要用PHPUnit?

    1、可以通过命令操控测试脚本

    2、可以测试性能

    3、可以测试代码覆盖率

    4、可以自动化的更新测试用例的参数数据

    5、各种格式的日志

    三、PHPUnit使用规则

    1、 一般被测试类的后面加上”Test”,比如要测试的类为Array,则测试用例的命名为ArrayTest。

    2、测试类ArrayTest继承于PHPUnit_Framework_TestCase

    3、测试方法必须为public权限,都是test开头,或者你也可以选择给其加注释@test来表明该函数为测试函数

    4、通过断言方法来对实际值和预期值进行断言,断言方法可以参照手册:http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.assertions.html

    快速入门:

    class ArrayTest extends PHPUnit_Framework_TestCase 
    {
    //测试用例运行前初始化
    public function setUp(){}

    //测试用例运行后执行
    public function tearDown(){}
    /**
    * @test
    */
    public function testArrayIsEmpty()
    {
    $fixture = array();

    // 断言数组$fixture中元素的数目是0。
    $this->assertEquals(0, sizeof($fixture));
    }
    /**
    * @test
    */
    public function testarrayHasKey()
    {
    $arr = array(
    'id'=>666,
    'name'=>'zhangsan',
    );
    //断言$arr是一个数组
    $this->assertTrue(is_array($arr));
    //断言数组$arr中含有索引id
    $this->assertArrayHasKey('id',$arr);
    //断言数组$arr中含有索引name
    $this->assertArrayHasKey('name',$arr);
    }

    }

    命令行启动测试用例:

    phpunit  测试文件名,此处为要测试ArrayTest.php文件

    phpunit ArrayTest.php

    PHPUnit 5.7.5 by Sebastian Bergmann and contributors.

    .. 2 / 2 (100%)

    Time: 138 ms, Memory: 3.25MB

    OK (2 tests, 4 assertions)

    记录测试日志:

    日志多种格式http://www.phpunit.cn/manual/5.7/zh_cn/textui.html#textui.clioptions

    phpunit ArrayTest.php --log-tap log.txt

    TAP version 13
    ok 1 - ArrayTest::testArrayIsEmpty
    ok 2 - ArrayTest::testarrayHasKey
    1..2

    四、PHPUnit测试代码覆盖率

    可以参考:http://www.phpunit.cn/manual/current/zh_cn/code-coverage-analysis.html

    可以通过配置phpunit.xml设置需要测试的代码路径或文件

    例如:phpunit.xml的配置(放在项目根目录)

    1、通过生成html页面查看代码覆盖率

    通过执行命令:phpunit --coverage-html ./coverage ./src/test

    命令解释:

    • --coverage-html:生成覆盖率结果的html
    • coverage:html生成目录,可以重新定义
    • ./src/test:测试用例目录(也可以是单个测试用例文件)

    覆盖率结果:

    可以看到目录里每个文件的覆盖率:

    还可以清晰的看到每一个文件代码覆盖率:

    2、通过生成的text文件查看代码覆盖率

    通过执行命令:phpunit --coverage-text ./src/test > test.log

    命令解释:

    • --coverage-html:生成覆盖率结果的text
    • ./src/test:测试用例目录(也可以是单个测试用例文件)
    • > test.log:存放覆盖率结果的文件(文件名称自己定义)

    覆盖率结果:

    可以清晰的看到总覆盖率和每个文件的覆盖率。

    覆盖率计算问题:

    1、类:只有类中所有代码都执行了,覆盖率才为100%;

    2、方法:类中的方法每一行都执行了,覆盖率才算100%。例如:类中有5个方法,有两个方法每一行执行了,覆盖率为:40%;

    3、行:每一行代码都执行了就是100%;

  • 相关阅读:
    最高的牛
    激光炸弹(二维前缀和)
    汉诺塔问题
    费解的开关
    Hamilton路径(模板题)
    大臣的旅费【树型dp + 求树最长链】
    [蓝桥杯2018初赛]全球变暖
    操作集景
    [蓝桥杯2018初赛]倍数问题
    一些数学公式
  • 原文地址:https://www.cnblogs.com/66w66/p/14981290.html
Copyright © 2020-2023  润新知