博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHPUnit简介及使用
阅读量:7298 次
发布时间:2019-06-30

本文共 1870 字,大约阅读时间需要 6 分钟。

一、PHPUnit是什么?

1、它是一款轻量级的框架,地址:

2、手册:

二、为什么要用PHPUnit?

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

2、可以测试性能

3、可以测试代码覆盖率

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

5、各种格式的日志

三、PHPUnit使用规则

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

2、测试类ArrayTest继承于PHPUnit_Framework_TestCase

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

4、通过断言方法来对实际值和预期值进行断言,断言方法可以参照手册:

 

快速入门:

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)

记录测试日志:

日志多种格式

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

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

四、PHPUnit测试代码覆盖率

可以参考:

可以通过配置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%;

 

转载于:https://www.cnblogs.com/rxbook/p/6763735.html

你可能感兴趣的文章
Spring4+SpringMVC+MyBatis整合思路
查看>>
聊聊技术路线的选择
查看>>
Activiti6.0 java项目框架 spring5 SSM 工作流引擎 审批流程
查看>>
信息收集工具exiftool获取图片中的exif信息
查看>>
Android 依赖注入可以更简单 —— 新版本 Dagger 2 使用教学
查看>>
Kotlin 标准库中run、let、also、apply、with函数的用法和区别
查看>>
MIT课程笔记①丨因果关系定义及潜在结果分析框架
查看>>
简单算法题:leetcode-2 两数相加
查看>>
小猿圈讲解Java可以做什么?
查看>>
代理加盟哪家小程序开发公司好
查看>>
VUE Cookbook 系列:实现可配置组合表单
查看>>
从jQuery 入口方式写jQuery工具类库
查看>>
在iview项目中添加echarts3
查看>>
Dart基础语法
查看>>
chrome 插件开发心得
查看>>
把HTML转成PDF的4个方案及实现方法
查看>>
小程序自动化测试--测试3
查看>>
java springcloud版b2b2c社交电商spring cloud分布式微服务 (四) 断路器(Hystrix)
查看>>
java B2B2C Springboot电子商务平台源码-Feign设计原理
查看>>
canvas使用技巧大全
查看>>