http://www.oschina.net/question/54100_33155
PHPUnit是什么?
它是一款轻量级的php测试框架
为什么要用PHPUnit?
1. facebook在用
2. 可以通过命令操控测试脚本
3. 可以测试性能
4. 可以测试代码覆盖率
5. 可以自动化的更新测试用例的参数数据
6. 各种格式的日志
6. 最最重要的是,功能如此炫,使用起来还特别简单
PHPUnit的安装
1 |
pear channel-discover pear.phpunit.de |
2 |
pear install phpunit/PHPUnit |
快速入门
02 |
require_once 'PHPUnit/Framework.php'; |
04 |
class ArrayTest extends PHPUnit_Framework_TestCase |
06 |
public function testNewArrayIsEmpty() |
12 |
$this->assertEquals(0, sizeof($fixture)); |
1. ArrayTest为测试类
2. ArrayTest 继承于PHPUnit_Framework_TestCase
3.测试方法testNewArrayIsEmpty(),测试方法必须为public权限,一般以test开头,或者你也可以选择给其加注释@test来表明该函数为测试函数
4 |
public function testNewArrayIsEmpty() |
7 |
$this->assertEquals(0, sizeof($fixture)); |
命令行启动测试
phpunit 测试文件名,此处为要测试ArrayTest.php文件
phpunit ArrayTest
PHPUnit 3.2.10 by Sebastian Bergmann.
..
Time: 0 seconds
OK (2 tests)
命令行参数
02 |
PHPUnit 3.2.10 by Sebastian Bergmann. |
04 |
Usage: phpunit [switches] UnitTest [UnitTest.php] |
06 |
--log-graphviz <file> Log test execution in GraphViz markup. |
07 |
--log-json <file> Log test execution in JSON format. |
08 |
--log-tap <file> Log test execution in TAP format to file. |
09 |
--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. |
13 |
--coverage-html <dir> Generate code coverage report in HTML format. |
14 |
--coverage-xml <file> Write code coverage information in XML format. |
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. |
21 |
--testdox-html <file> Write agile documentation in HTML format to file. |
22 |
--testdox-text <file> Write agile documentation in Text format to file. |
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). |
28 |
--loader <loader> TestSuiteLoader implementation to use. |
29 |
--repeat <times> Runs the test(s) repeatedly. |
31 |
--tap Report test execution progress in TAP format. |
32 |
--testdox Report test execution progress in TestDox format. |
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. |
39 |
--skeleton Generate skeleton UnitTest class for Unit in Unit.php. |
41 |
--help Prints this usage information. |
42 |
--version Prints the version and exits. |
44 |
--configuration <file> Read configuration from XML file. |
45 |
-d key[=value] Sets a php.ini value. |
高级功能
你是否已经厌烦了在每一个测试方法命名前面加一个test,是否因为只是调用的参数不同,却要写多个测试用例而纠结?我最喜欢的高级功能,现在隆重推荐给你,叫做框架生成器
4 |
public function add($a, $b) |
命令行启动测试用例
phpunit --skeleton Calculator
PHPUnit 3.2.10 by Sebastian Bergmann.
Wrote test class skeleton for Calculator to CalculatorTest.php.
简单么?简单,但是它其实没有什么意义,因为没有测试数据,怎样加数据,哦哦哦,重头戏来了
10 |
public function add($a, $b) |
原始类中的每个方法都进行@assert注解的检测。这些被转变为测试代码,像这样
4 |
public function testAdd() { |
6 |
$this->assertEquals(0, $o->add(0, 0)); |
下面是运行输出结果:
phpunit CalculatorTest
PHPUnit 3.2.10 by Sebastian Bergmann.
....
Time: 0 seconds
OK (4 tests)
文章出处:http://blog.csdn.net/fly_heart_yuan/article/details/6998603