PHPUnit入门篇

PHPUnit是什么?

它是一款轻量级的php测试框架

为什么要用PHPUnit?

1. facebook在用

2. 可以通过命令操控测试脚本

3. 可以测试性能

4. 可以测试代码覆盖率

5. 可以自动化的更新测试用例的参数数据

6. 各种格式的日志

6. 最最重要的是,功能如此炫,使用起来还特别简单

PHPUnit的安装

1 pear channel-discover pear.phpunit.de  
2 pear install phpunit/PHPUnit

快速入门

 1 <?php  
2 require_once 'PHPUnit/Framework.php';
3
4 class ArrayTest extends PHPUnit_Framework_TestCase
5 {
6 public function testNewArrayIsEmpty()
7 {
8 // 创建数组fixture。
9 $fixture = array();
10
11 // 断言数组fixture的尺寸是0。
12 $this->assertEquals(0, sizeof($fixture));
13 }
14 }
15 ?>

1. ArrayTest为测试类

2. ArrayTest 继承于PHPUnit_Framework_TestCase

3.测试方法testNewArrayIsEmpty(),测试方法必须为public权限,一般以test开头,或者你也可以选择给其加注释@test来表明该函数为测试函数

1 public function testNewArrayIsEmpty()  
2 {
3 $fixture = array();
4 $this->assertEquals(0, sizeof($fixture));
5 }

命令行启动测试

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

1 phpunit ArrayTest  
2 PHPUnit 3.2.10 by Sebastian Bergmann.
3 ..
4 Time: 0 seconds
5 OK (2 tests)

命令行参数

 1 phpunit --help  
2 PHPUnit 3.2.10 by Sebastian Bergmann.
3
4 Usage: phpunit [switches] UnitTest [UnitTest.php]
5
6 --log-graphviz <file> Log test execution in GraphViz markup.
7 --log-json <file> Log test execution in JSON format.
8 --log-tap <file> Log test execution in TAP format to file.
9 --log-xml <file> Log test execution in XML format to file.
10 --log-metrics <file> Write metrics report in XML format.
11 --log-pmd <file> Write violations report in PMD XML format.
12
13 --coverage-html <dir> Generate code coverage report in HTML format.
14 --coverage-xml <file> Write code coverage information in XML format.
15
16 --test-db-dsn <dsn> DSN for the test database.
17 --test-db-log-rev <r> Revision information for database logging.
18 --test-db-prefix ... Prefix that should be stripped from filenames.
19 --test-db-log-info ... Additional information for database logging.
20
21 --testdox-html <file> Write agile documentation in HTML format to file.
22 --testdox-text <file> Write agile documentation in Text format to file.
23
24 --filter <pattern> Filter which tests to run.
25 --group ... Only runs tests from the specified group(s).
26 --exclude-group ... Exclude tests from the specified group(s).
27
28 --loader <loader> TestSuiteLoader implementation to use.
29 --repeat <times> Runs the test(s) repeatedly.
30
31 --tap Report test execution progress in TAP format.
32 --testdox Report test execution progress in TestDox format.
33
34 --no-syntax-check Disable syntax check of test source files.
35 --stop-on-failure Stop execution upon first error or failure.
36 --verbose Output more verbose information.
37 --wait Waits for a keystroke after each test.
38
39 --skeleton Generate skeleton UnitTest class for Unit in Unit.php.
40
41 --help Prints this usage information.
42 --version Prints the version and exits.
43
44 --configuration <file> Read configuration from XML file.
45 -d key[=value] Sets a php.ini value.

高级功能

你是否已经厌烦了在每一个测试方法命名前面加一个test,是否因为只是调用的参数不同,却要写多个测试用例而纠结?我最喜欢的高级功能,现在隆重推荐给你,叫做框架生成器

1 <?php  
2 class Calculator
3 {
4 public function add($a, $b)
5 {
6 return $a + $b;
7 }
8 }
9 ?>

命令行启动测试用例

1 phpunit --skeleton Calculator  
2 PHPUnit 3.2.10 by Sebastian Bergmann.
3
4 Wrote test class skeleton for Calculator to CalculatorTest.php.

简单么?简单,但是它其实没有什么意义,因为没有测试数据,怎样加数据,哦哦哦,重头戏来了

 1 <?php  
2 class Calculator
3 {
4
5 public function add($a, $b)
6 {
7 return $a + $b;
8 }
9 }
10 ?>

原始类中的每个方法都进行@assert注解的检测。这些被转变为测试代码,像这样
   
    public function testAdd() {
        $o = new Calculator;
        $this->assertEquals(0, $o->add(0, 0));
    }
下面是运行生成的测试用例类的输出。

1 phpunit CalculatorTest  
2 PHPUnit 3.2.10 by Sebastian Bergmann.
3
4 ....
5
6 Time: 0 seconds
7
8
9 OK (4 tests)










 




转载于:https://www.cnblogs.com/jiamei/archive/2011/12/09/2281788.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值