PHP教程:PHPUnit学习笔记(二)PHPUnit基本用法
2013-11-20 13:43
232 查看
上篇日记中我介绍了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编写测试用例的进阶知识.
编写一个栈测试的例子的步骤:
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编写测试用例的进阶知识.
相关文章推荐
- PHPUnit学习笔记(二)PHPUnit基本用法
- PHPUnit学习笔记(二)PHPUnit基本用法
- PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
- PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
- 韩顺平_php从入门到精通_视频教程_第2讲_html运行原理②_html文件基本结构_html元素和属性_学习笔记_源代码图解_PPT文档整理
- PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
- php正则表达式基本知识与应用详解【经典教程】
- php中的curl使用入门教程和常见用法实例
- PHP 压缩解压缩类PclZip用法教程
- [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数
- mac os 利用ssh 搭建git server服务器详细教程,以及git基本用法(上)
- Javascript常用函数及基本教程集合的用法参考
- php—cURL库基本用法总结
- PHP操作Excel – PHPExcel 基本用法详解
- PHP第一季视频教程.李炎恢.学习笔记(四)(第2章 基本语法(3))
- Git 教程 - Git 基本用法
- php连接mysql 插入 更新 删除基本用法
- JSP入门教程之客户端验证、常用输出方式及JSTL基本用法
- PHP操作Excel – PHPExcel 基本用法详解
- SAPUI5教程—— Link的基本用法