上篇日记中我介绍了phpunit的配置方法,今天就开始介绍如何用PHPUnit来编写测试用例,下面我来引入一个测试PHP数组操做的测试用例,这个例子会给你展现PHPUnit常规的用法和测试用例编写的步骤。当前目标主要是对PHPUnit的基本使用有一个大概的了解,相似开发程序教程中的Hello World程序,知道程序怎么写,怎么去运行。php
编写一个栈测试的例子的步骤:数组
1. 定义一个测试类StackTest保存于StackTest.php中函数
2. 这个类继承于PHPUnit_Framework_TestCase单元测试
3. 定义类中的测试方法,类的全部的测试用例方法须要用test开头,固然,你也能够在使用@test注释来定义一个名字不为test开头的方法为测试方法测试
4. 在这些测试方法中,咱们须要使用断言方法(assertion methods)如assertEquals()来断言实际传入的参数和期待的参数的值相同来达到测试的目的.spa
下面咱们来看代码:命令行
例子代码中我使用断言方法assertEquals来断言我期待$stack相关的值3d
注意代码中高亮的方法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编写测试用例的进阶知识.