#### PHPUnit是什么?
它是一款轻量级的php测试框架
#### 为什么要用PHPUnit?
1. facebook在用
2. 可以通过命令操控测试脚本
3. 可以测试性能
4. 可以测试代码覆盖率
5. 可以自动化的更新测试用例的参数数据
6. 各种格式的日志
6. 最最重要的是,功能强大,使用特别简单
#### PHPUnit的安装
~~~
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
~~~
#### 快速入门
~~~
<?php
require_once 'PHPUnit/Framework.php';
class ArrayTest extends PHPUnit_Framework_TestCase
{
public function testNewArrayIsEmpty()
{
// 创建数组fixture。
$fixture = array();
// 断言数组fixture的尺寸是0。
$this->assertEquals(0, sizeof($fixture));
}
}
?>
~~~
1. ArrayTest为测试类
2. ArrayTest 继承于PHPUnit_Framework_TestCase
3. 测试方法`testNewArrayIsEmpty()`,测试方法必须为`public`权限,一般以`test`开头,或者你也可以选择给其加注释`@test`来表明该函数为测试函数
~~~
/**
* @test
*/
public function testNewArrayIsEmpty()
{
$fixture = array();
$this->assertEquals(0, sizeof($fixture));
}
~~~
#### 命令行启动测试
phpunit 测试文件名,测试`ArrayTest.php`文件
~~~
phpunit ArrayTest
PHPUnit 3.2.10 by Sebastian Bergmann.
..
Time: 0 seconds
OK (2 tests)
~~~
#### 命令行参数
~~~
phpunit --help
PHPUnit 3.2.10 by Sebastian Bergmann.
Usage: phpunit [switches] UnitTest [UnitTest.php]
--log-graphviz <file> Log test execution in GraphViz markup.
--log-json <file> Log test execution in JSON format.
--log-tap <file> Log test execution in TAP format to file.
--log-xml <file> Log test execution in XML format to file.
--log-metrics <file> Write metrics report in XML format.
--log-pmd <file> Write violations report in PMD XML format.
--coverage-html <dir> Generate code coverage report in HTML format.
--coverage-xml <file> Write code coverage information in XML format.
--test-db-dsn <dsn> DSN for the test database.
--test-db-log-rev <r> Revision information for database logging.
--test-db-prefix ... Prefix that should be stripped from filenames.
--test-db-log-info ... Additional information for database logging.
--testdox-html <file> Write agile documentation in HTML format to file.
--testdox-text <file> Write agile documentation in Text format to file.
--filter <pattern> Filter which tests to run.
--group ... Only runs tests from the specified group(s).
--exclude-group ... Exclude tests from the specified group(s).
--loader <loader> TestSuiteLoader implementation to use.
--repeat <times> Runs the test(s) repeatedly.
--tap Report test execution progress in TAP format.
--testdox Report test execution progress in TestDox format.
--no-syntax-check Disable syntax check of test source files.
--stop-on-failure Stop execution upon first error or failure.
--verbose Output more verbose information.
--wait Waits for a keystroke after each test.
--skeleton Generate skeleton UnitTest class for Unit in Unit.php.
--help Prints this usage information.
--version Prints the version and exits.
--configuration <file> Read configuration from XML file.
-d key[=value] Sets a php.ini value.
~~~