PHP 单元测试

1,147 views
949 views

Published on

PHP 单元测试

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,147
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
18
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

PHP 单元测试

  1. 1. PHP 单元测试PHPUnit介绍以及使用示例蓝燕光2012-7-25
  2. 2. 软件测试单元测试功能测试集成测试性能测试系统测试验收测试回归测试。。。。。。
  3. 3. 单元测试定义:验证程序中类方法和函数执行后的预期结果好处:尽早发现错误,修正BUG 自动化测试,提高效率 单元测试用例本身就是一个demo 给代码重构提供保障 给程序设计提供思考缺点:浪费时间? 太麻烦?范围: TDD(Test-Driven Development) 测试驱动开发 开发时测试,测试功能预期结果正确 调试时测试,回归测试,验证缺陷是否可以重现职责:单元测试是开发人员该做的事
  4. 4. PHPUnitPHPUnit是PHP单元测试框架,由 SEBASTIAN BERGMANN 开发维护。目前最新版本3.7,稳定版本3.6官方网站:http://www.phpunit.de/manual/current/en/index.htmlGitHub: https://github.com/sebastianbergmann/phpunit伯格曼个人网站:http://sebastian-bergmann.de/
  5. 5. PHPUnit 安装PHPUnit 基于PEAR(PHP Extension and Application Repository)安装注意:PHPUnit 3.6 需要PHP 5.2.7及以上版本,推荐PHP 5.3.9及以上版本。PHPUnit 3.6 PHP_CodeCoverage 模块依赖 Xdebug 2.0.5 及以上版本,推荐Xdebug 2.1.3 及以上版本。1、升级PEAR包 pear upgrade PEAR2、安装PHPUnit pear config-set auto_discover 1 pear install pear.phpunit.de/PHPUnit
  6. 6. PHPUnit 约定1、测试类以Test结尾,例如类Stack的测试类为StackTest2、测试类继承PHPUnit_Framework_TestCase3、测试是公共方法,并且以test*命名4、使用assertEquals()断言方法进行测试
  7. 7. PHPUnit 示例
  8. 8. 测试一个测试用例phpunit -v StackTest.php
  9. 9. PHPUnit 特性Assertions 断言Annotations 注释Data Providers 数据提供商Fixtures 装载器Test Doubles 隔离测试Database Testing 数据库测试
  10. 10. Assertions 断言assertEquals(mixed $expected, mixed $actual[, string $message = ]) 期望值 实际结果 测试失败抛出的信息
  11. 11. Annotations 注释注释在PHPUnit里面是做特殊用途的,有时候可以做反向代码生成.这里的注释是指在程序中除了描述之外的另外功能.其他使用注释作为代码辅助的项目phpDocumentor 2Symfony 2eZ ComponentsDoctrine 2/** * @test */public function initialBalanceShouldBe0(){ $this->assertEquals(0, $this->ba->getBalance());}
  12. 12. Test Dependencies 依赖测试
  13. 13. Data Providers 数据提供商1、provider 必须是 public方法2、provider 的返回集应该是一个数组或者可迭代的对象3、不要依赖使用 provider 的方法4、provider 在 setUp 方法触发之前执行
  14. 14. Testing Exceptions 异常测试 使用注释
  15. 15. Testing Exceptions 异常测试 使用setExpectedException
  16. 16. Testing Exceptions 测试异常
  17. 17. Testing PHP Errors 测试错误
  18. 18. Testing Output 测试输出expectOutputRegex(string $regularExpression)void expectOutputString(string $expectedString)bool setOutputCallback(callable $callback)
  19. 19. 命令行测试. 表示成功F 表示测试失败E 表示测试错误S 表示测试被跳过I 表示测试未完成
  20. 20. 命令行测试
  21. 21. Fixtures 装载器
  22. 22. Fixtures 装载器 setUp() 测试函数执行前重置执行 tearDown() setUpBeforeClass() 测试类执行前后出发 tearDownAfterClass() assertPreConditions() 断言前后,测试失败不触发 assertPostConditions()
  23. 23. Incomplete Tests 未完成测试void markTestIncomplete()void markTestIncomplete(string $message
  24. 24. Skipping Tests 跳过测试void markTestSkipped()void markTestSkipped(string $message)
  25. 25. Skeleton Generator 测试生成通过 phpunit-skelgen 命令可以自动生成测试文件
  26. 26. Skeleton Generator 测试生成通过注释可以直接生成测试断言
  27. 27. PHPUnit XML 配置
  28. 28. Netbeans & PHPUnit &Xdebug Netbeans 支持PHPUnit 测试代码生成 和测试。 Xdebug 用于统计单元测试覆盖率
  29. 29. 目录结构

×