PHPUnit入门篇
来源:互联网 发布:mac版spss中文版下载 编辑:程序博客网 时间:2024/05/21 07:19
PHPUnit是什么?
它是一款轻量级的php测试框架
为什么要用PHPUnit?
1. facebook在用
2. 可以通过命令操控测试脚本
3. 可以测试性能
4. 可以测试代码覆盖率
5. 可以自动化的更新测试用例的参数数据
6. 各种格式的日志
6. 最最重要的是,功能如此炫,使用起来还特别简单
PHPUnit的安装
- pear channel-discover pear.phpunit.de
- pear install phpunit/PHPUnit
pear channel-discover pear.phpunit.depear 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));
- }
- }
- ?>
<?phprequire_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));
- }
/*** @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 ArrayTestPHPUnit 3.2.10 by Sebastian Bergmann...Time: 0 secondsOK (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.
phpunit --helpPHPUnit 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.
高级功能
你是否已经厌烦了在每一个测试方法命名前面加一个test,是否因为只是调用的参数不同,却要写多个测试用例而纠结?我最喜欢的高级功能,现在隆重推荐给你,叫做框架生成器
- <?php
- class Calculator
- {
- public function add($a, $b)
- {
- return $a + $b;
- }
- }
- ?>
<?phpclass Calculator{ public function add($a, $b) { return $a + $b; }}?>
命令行启动测试用例
- phpunit --skeleton Calculator
- PHPUnit 3.2.10 by Sebastian Bergmann.
- Wrote test class skeleton for Calculator to CalculatorTest.php.
phpunit --skeleton CalculatorPHPUnit 3.2.10 by Sebastian Bergmann.Wrote test class skeleton for Calculator to CalculatorTest.php.
简单么?简单,但是它其实没有什么意义,因为没有测试数据,怎样加数据,哦哦哦,重头戏来了
- <?php
- class Calculator
- {
- /**
- * @assert (0, 0) == 0
- * @assert (0, 1) == 1
- * @assert (1, 0) == 1
- * @assert (1, 1) == 2
- */
- public function add($a, $b)
- {
- return $a + $b;
- }
- }
- ?>
<?phpclass Calculator{ /** * @assert (0, 0) == 0 * @assert (0, 1) == 1 * @assert (1, 0) == 1 * @assert (1, 1) == 2 */ public function add($a, $b) { return $a + $b; }}?>
原始类中的每个方法都进行@assert注解的检测。这些被转变为测试代码,像这样
/**
* Generated from @assert (0, 0) == 0.
*/
public function testAdd() {
$o = new Calculator;
$this->assertEquals(0, $o->add(0, 0));
}
下面是运行生成的测试用例类的输出。
- phpunit CalculatorTest
- PHPUnit 3.2.10 by Sebastian Bergmann.
- ....
- Time: 0 seconds
- OK (4 tests)
0 0
- PHPUnit入门篇
- PHPUnit入门篇
- phpunit入门基础
- PHPunit快速入门
- Composer和PHPUnit入门
- PHP单元测试利器PHPUnit入门
- PHPunit
- phpunit
- PHP单元测试框架——PHPUnit入门
- PHPUnit安装及入门(Unix或者Linux下)
- 安装PHPUnit
- PHPUnit+HTMLRunner
- PHPUnit系列
- PHPUnit安装
- phpunit是什么?
- PHPUnit manual
- PHPUnit 安装
- phpunit ubuntu
- 关于 Java 数组的 12 个最佳方法
- Android开发工具网址mark
- java 中volatile的理解参考
- Java反射之——方法反射的基本操作
- Python网络编程:E-mail服务(四) 编写传统邮件
- PHPUnit入门篇
- 360笔试题目-HashMap实现
- Android_Handler用法
- yii2学习笔记(四)环境配置
- Spring MVC 中 HandlerInterceptorAdapter的使用
- 由Struct到NSData和NSValue
- 2015编程之美初赛第一场 A 彩色的树
- 哈工大 数据库实验2-使用高级语言操作MySQL数据库
- struts2-通用和控制标签大纲