Toggle navigation
PHPUnit
5.0 (alpha)
4.8 (beta)
4.7 (
stable
)
English
Japanese
Brazilian Portuguese
Simplified Chinese
1. 安装 PHPUnit
需求
PHP 档案包 (PHAR)
Windows
校验 PHPUnit PHAR 发行包
Composer
可选的组件包
2. 编写 PHPUnit 测试
测试的依赖关系
数据供给器
对异常进行测试
对 PHP 错误进行测试
对输出进行测试
错误相关信息的输出
边缘情况
3. 命令行测试执行器
命令行选项
4. 基境(fixture)
setUp() 多 tearDown() 少
变体
基境共享
全局状态
5. 组织测试
用文件系统来编排测试套件
用 XML 配置来编排测试套件
6. 有风险的测试
无用测试
意外的代码覆盖
测试执行期间产生的输出
测试执行时长的超时限制
全局状态篡改
7. 未完成的测试与跳过的测试
未完成的测试
跳过测试
用 @requires 来跳过测试
8. 数据库测试
数据库测试所支持的供应商
数据库测试的难点
数据库测试的四个阶段
1. 清理数据库
2. 建立基境
3–5. 运行测试、验证结果、并拆除基境
PHPUnit 数据库测试用例的配置
实现 getConnection()
实现 getDataSet()
数据库构架(DDL)怎么办?
小建议:使用你自己的抽象数据库 TestCase 类
理解 DataSet(数据集)和 DataTable(数据表)
可用的各种实现
当心外键
实现自有的 DataSet/DataTable
数据库连接 API
数据库断言 API
对表中数据行的数量作出断言
对表的状态作出断言
对查询的结果作出断言
对多个表的状态作出断言
常见问题(FAQ)
PHPUnit 会为每个测试(重新)创建数据库吗?
为了让数据库扩展模块正常工作,需要在应用程序中使用 PDO 吗?
如果看到
“
Too much Connections
”
错误该怎么办?
Flat XML / CSV 数据集中如何处理 NULL?
9. 测试替身
桩件(Stub)
仿件对象(Mock Object)
Prophecy
对特质(Trait)与抽象类进行模仿
对 Web 服务(Web Services)进行上桩或模仿<
对文件系统进行模仿
10. 测试实践
在开发过程中
在调试过程中
11. 代码覆盖率分析
用于代码覆盖率的软件衡量标准
包含与排除文件
略过代码块
指明要覆盖的方法
边缘情况
12. 测试的其他用途
敏捷文档
跨团队测试
13. PHPUnit 与 Selenium
Selenium Server
安装
PHPUnit_Extensions_Selenium2TestCase
PHPUnit_Extensions_SeleniumTestCase
14. 日志记录
测试结果 (XML)
测试结果 (TAP)
测试结果 (JSON)
代码覆盖率 (XML)
代码覆盖率 (TEXT)
15. 扩展 PHPUnit
从 PHPUnit_Framework_TestCase 派生子类
编写自定义断言
实现 PHPUnit_Framework_TestListener
从 PHPUnit_Extensions_TestDecorator 派生子类
实现 PHPUnit_Framework_Test
A. 断言
assertArrayHasKey()
assertArraySubset()
assertClassHasAttribute()
assertClassHasStaticAttribute()
assertContains()
assertContainsOnly()
assertContainsOnlyInstancesOf()
assertCount()
assertEmpty()
assertEqualXMLStructure()
assertEquals()
assertFalse()
assertFileEquals()
assertFileExists()
assertGreaterThan()
assertGreaterThanOrEqual()
assertInstanceOf()
assertInternalType()
assertJsonFileEqualsJsonFile()
assertJsonStringEqualsJsonFile()
assertJsonStringEqualsJsonString()
assertLessThan()
assertLessThanOrEqual()
assertNull()
assertObjectHasAttribute()
assertRegExp()
assertStringMatchesFormat()
assertStringMatchesFormatFile()
assertSame()
assertStringEndsWith()
assertStringEqualsFile()
assertStringStartsWith()
assertThat()
assertTrue()
assertXmlFileEqualsXmlFile()
assertXmlStringEqualsXmlFile()
assertXmlStringEqualsXmlString()
B. 标注
@author
@after
@afterClass
@backupGlobals
@backupStaticAttributes
@before
@beforeClass
@codeCoverageIgnore*
@covers
@coversDefaultClass
@coversNothing
@dataProvider
@depends
@expectedException
@expectedExceptionCode
@expectedExceptionMessage
@expectedExceptionMessageRegExp
@group
@large
@medium
@preserveGlobalState
@requires
@runTestsInSeparateProcesses
@runInSeparateProcess
@small
@test
@testdox
@ticket
@uses
C. XML 配置文件
PHPUnit
测试套件
分组
为代码覆盖率包含或排除文件
Logging (日志记录)
测试监听器
设定 PHP INI 设置、常量、全局变量
为 Selenium RC 配置浏览器
D. 升级
从 PHPUnit 3.7 升级到 PHPUnit 4.0
E. 索引
F. 参考书目
G. 版权
上一章
下一章
附录 E. 索引
符号
$backupGlobalsBlacklist,
全局状态
$backupStaticAttributesBlacklist,
全局状态
@author,
命令行选项
,
@author
@backupGlobals,
全局状态
,
@backupGlobals
@backupStaticAttributes,
全局状态
,
@backupStaticAttributes
@codeCoverageIgnore,
略过代码块
,
@codeCoverageIgnore*
@codeCoverageIgnoreEnd,
略过代码块
,
@codeCoverageIgnore*
@codeCoverageIgnoreStart,
略过代码块
,
@codeCoverageIgnore*
@covers,
指明要覆盖的方法
,
@covers
@coversDefaultClass,
@coversDefaultClass
@coversNothing,
指明要覆盖的方法
,
@coversNothing
@dataProvider,
数据供给器
,
@dataProvider
@depends,
测试的依赖关系
,
数据供给器
,
@depends
@expectedException,
对异常进行测试
,
@expectedException
@expectedExceptionCode,
对异常进行测试
,
@expectedExceptionCode
@expectedExceptionMessage,
对异常进行测试
,
@expectedExceptionMessage
@expectedExceptionMessageRegExp,
对异常进行测试
,
@expectedExceptionMessageRegExp
@group,
命令行选项
,
@group
@large,
@large
@medium,
@medium
@preserveGlobalState,
@preserveGlobalState
@requires,
@requires
@runInSeparateProcess,
@runInSeparateProcess
@runTestsInSeparateProcesses,
@runTestsInSeparateProcesses
@small,
@small
@test,
编写 PHPUnit 测试
,
@test
@testdox,
@testdox
@ticket,
@ticket
@uses,
@uses
变更风险反模式(CRAP)指数(Change Risk Anti-Patterns (CRAP) Index),
用于代码覆盖率的软件衡量标准
敏捷文档,
命令行选项
A
Agile Documentation (敏捷文档),
命令行选项
,
敏捷文档
Annotation (标注),
编写 PHPUnit 测试
,
测试的依赖关系
,
数据供给器
,
对异常进行测试
,
命令行选项
,
略过代码块
,
指明要覆盖的方法
,
标注
anything(),
assertThat()
arrayHasKey(),
assertThat()
assertArrayHasKey(),
assertArrayHasKey()
assertArrayNotHasKey(),
assertArrayHasKey()
assertArraySubset(),
assertArraySubset()
assertAttributeContains(),
assertContains()
assertAttributeContainsOnly(),
assertContainsOnly()
assertAttributeEmpty(),
assertEmpty()
assertAttributeEquals(),
assertEquals()
assertAttributeGreaterThan(),
assertGreaterThan()
assertAttributeGreaterThanOrEqual(),
assertGreaterThanOrEqual()
assertAttributeInstanceOf(),
assertInstanceOf()
assertAttributeInternalType(),
assertInternalType()
assertAttributeLessThan(),
assertLessThan()
assertAttributeLessThanOrEqual(),
assertLessThanOrEqual()
assertAttributeNotContains(),
assertContains()
assertAttributeNotContainsOnly(),
assertContainsOnly()
assertAttributeNotEmpty(),
assertEmpty()
assertAttributeNotEquals(),
assertEquals()
assertAttributeNotInstanceOf(),
assertInstanceOf()
assertAttributeNotInternalType(),
assertInternalType()
assertAttributeNotSame(),
assertSame()
assertAttributeSame(),
assertSame()
assertClassHasAttribute(),
assertClassHasAttribute()
assertClassHasStaticAttribute(),
assertClassHasStaticAttribute()
assertClassNotHasAttribute(),
assertClassHasAttribute()
assertClassNotHasStaticAttribute(),
assertClassHasStaticAttribute()
assertContains(),
assertContains()
assertContainsOnly(),
assertContainsOnly()
assertContainsOnlyInstancesOf(),
assertContainsOnlyInstancesOf()
assertCount(),
assertCount()
assertEmpty(),
assertEmpty()
assertEquals(),
assertEquals()
assertEqualXMLStructure(),
assertEqualXMLStructure()
assertFalse(),
assertFalse()
assertFileEquals(),
assertFileEquals()
assertFileExists(),
assertFileExists()
assertFileNotEquals(),
assertFileEquals()
assertFileNotExists(),
assertFileExists()
assertGreaterThan(),
assertGreaterThan()
assertGreaterThanOrEqual(),
assertGreaterThanOrEqual()
assertInstanceOf(),
assertInstanceOf()
assertInternalType(),
assertInternalType()
assertJsonFileEqualsJsonFile(),
assertJsonFileEqualsJsonFile()
assertJsonFileNotEqualsJsonFile(),
assertJsonFileEqualsJsonFile()
assertJsonStringEqualsJsonFile(),
assertJsonStringEqualsJsonFile()
assertJsonStringEqualsJsonString(),
assertJsonStringEqualsJsonString()
assertJsonStringNotEqualsJsonFile(),
assertJsonStringEqualsJsonFile()
assertJsonStringNotEqualsJsonString(),
assertJsonStringEqualsJsonString()
assertLessThan(),
assertLessThan()
assertLessThanOrEqual(),
assertLessThanOrEqual()
assertNotContains(),
assertContains()
assertNotContainsOnly(),
assertContainsOnly()
assertNotCount(),
assertCount()
assertNotEmpty(),
assertEmpty()
assertNotEquals(),
assertEquals()
assertNotInstanceOf(),
assertInstanceOf()
assertNotInternalType(),
assertInternalType()
assertNotNull(),
assertNull()
assertNotRegExp(),
assertRegExp()
assertNotSame(),
assertSame()
assertNull(),
assertNull()
assertObjectHasAttribute(),
assertObjectHasAttribute()
assertObjectNotHasAttribute(),
assertObjectHasAttribute()
assertPostConditions(),
基境(fixture)
assertPreConditions(),
基境(fixture)
assertRegExp(),
assertRegExp()
assertSame(),
assertSame()
assertStringEndsNotWith(),
assertStringEndsWith()
assertStringEndsWith(),
assertStringEndsWith()
assertStringEqualsFile(),
assertStringEqualsFile()
assertStringMatchesFormat(),
assertStringMatchesFormat()
assertStringMatchesFormatFile(),
assertStringMatchesFormatFile()
assertStringNotEqualsFile(),
assertStringEqualsFile()
assertStringNotMatchesFormat(),
assertStringMatchesFormat()
assertStringNotMatchesFormatFile(),
assertStringMatchesFormatFile()
assertStringStartsNotWith(),
assertStringStartsWith()
assertStringStartsWith(),
assertStringStartsWith()
assertThat(),
assertThat()
assertTrue(),
assertTrue()
assertXmlFileEqualsXmlFile(),
assertXmlFileEqualsXmlFile()
assertXmlFileNotEqualsXmlFile(),
assertXmlFileEqualsXmlFile()
assertXmlStringEqualsXmlFile(),
assertXmlStringEqualsXmlFile()
assertXmlStringEqualsXmlString(),
assertXmlStringEqualsXmlString()
assertXmlStringNotEqualsXmlFile(),
assertXmlStringEqualsXmlFile()
assertXmlStringNotEqualsXmlString(),
assertXmlStringEqualsXmlString()
attribute(),
assertThat()
attributeEqualTo(),
assertThat()
Automated Documentation (自动文档),
敏捷文档
B
Blacklist (黑名单),
为代码覆盖率包含或排除文件
C
classHasAttribute(),
assertThat()
classHasStaticAttribute(),
assertThat()
Code Coverage (代码覆盖率),
命令行选项
,
代码覆盖率分析
,
@covers
,
为代码覆盖率包含或排除文件
Blacklist (黑名单),
包含与排除文件
Branch Coverage (分支覆盖率),
用于代码覆盖率的软件衡量标准
Class and Trait Coverage (类与特质覆盖率),
用于代码覆盖率的软件衡量标准
Function and Method Coverage (函数与方法覆盖率),
用于代码覆盖率的软件衡量标准
Line Coverage (行覆盖率),
用于代码覆盖率的软件衡量标准
Opcode Coverage (Opcode 覆盖率),
用于代码覆盖率的软件衡量标准
Path Coverage (路径覆盖率),
用于代码覆盖率的软件衡量标准
Whitelist (白名单),
包含与排除文件
Configuration (配置),
命令行选项
Constant (常量),
设定 PHP INI 设置、常量、全局变量
contains(),
assertThat()
containsOnly(),
assertThat()
containsOnlyInstancesOf(),
assertThat()
D
Data-Driven Tests (数据驱动测试),
实现 PHPUnit_Framework_Test
Defect Localization (缺陷定位),
测试的依赖关系
Depended-On Component (依赖组件),
测试替身
Documenting Assumptions (将假设文档化),
敏捷文档
E
equalTo(),
assertThat()
Error Handler (错误处理),
对 PHP 错误进行测试
Error (错误),
命令行测试执行器
Extreme Programming (极限编程),
敏捷文档
F
Failure (失败),
命令行测试执行器
fileExists(),
assertThat()
Fixture (基境),
基境(fixture)
Fluent Interface (流畅式接口),
桩件(Stub)
G
getMock(),
桩件(Stub)
getMockBuilder(),
桩件(Stub)
getMockForAbstractClass(),
对特质(Trait)与抽象类进行模仿
getMockForTrait(),
对特质(Trait)与抽象类进行模仿
getMockFromWsdl(),
对 Web 服务(Web Services)进行上桩或模仿<
Global Variable (全局变量),
全局状态
,
设定 PHP INI 设置、常量、全局变量
greaterThan(),
assertThat()
greaterThanOrEqual(),
assertThat()
H
hasAttribute(),
assertThat()
I
identicalTo(),
assertThat()
include_path,
命令行选项
Incomplete Test (未完成的测试),
未完成的测试
isFalse(),
assertThat()
isInstanceOf(),
assertThat()
isNull(),
assertThat()
isTrue(),
assertThat()
isType(),
assertThat()
J
JSON,
命令行选项
L
lessThan(),
assertThat()
lessThanOrEqual(),
assertThat()
Logfile (日志文件),
命令行选项
Logging (日志记录),
日志记录
,
Logging (日志记录)
logicalAnd(),
assertThat()
logicalNot(),
assertThat()
logicalOr(),
assertThat()
logicalXor(),
assertThat()
M
matchesRegularExpression(),
assertThat()
method(),
桩件(Stub)
Mock Object (仿件对象),
仿件对象(Mock Object)
O
onConsecutiveCalls(),
桩件(Stub)
onNotSuccessfulTest(),
基境(fixture)
P
PHP Error (PHP 错误),
对 PHP 错误进行测试
PHP Notice (PHP 通知),
对 PHP 错误进行测试
PHP Warning (PHP 警告),
对 PHP 错误进行测试
php.ini,
设定 PHP INI 设置、常量、全局变量
PHPUnit_Extensions_RepeatedTest,
从 PHPUnit_Extensions_TestDecorator 派生子类
PHPUnit_Extensions_Selenium2TestCase,
PHPUnit_Extensions_Selenium2TestCase
PHPUnit_Extensions_SeleniumTestCase,
PHPUnit_Extensions_SeleniumTestCase
PHPUnit_Extensions_TestDecorator,
从 PHPUnit_Extensions_TestDecorator 派生子类
PHPUnit_Framework_BaseTestListener,
实现 PHPUnit_Framework_TestListener
PHPUnit_Framework_Error,
对 PHP 错误进行测试
PHPUnit_Framework_Error_Notice,
对 PHP 错误进行测试
PHPUnit_Framework_Error_Warning,
对 PHP 错误进行测试
PHPUnit_Framework_IncompleteTest,
未完成的测试
PHPUnit_Framework_IncompleteTestError,
未完成的测试
PHPUnit_Framework_Test,
实现 PHPUnit_Framework_Test
PHPUnit_Framework_TestCase,
编写 PHPUnit 测试
,
从 PHPUnit_Framework_TestCase 派生子类
PHPUnit_Framework_TestListener,
命令行选项
,
实现 PHPUnit_Framework_TestListener
,
测试监听器
PHPUnit_Runner_TestSuiteLoader,
命令行选项
PHPUnit_Util_Printer,
命令行选项
PHP_Invoker,
@large
,
@medium
,
@small
Process Isolation (进程隔离),
命令行选项
R
Refactoring (重构),
在开发过程中
Report (报告),
命令行选项
returnArgument(),
桩件(Stub)
returnCallback(),
桩件(Stub)
returnSelf(),
桩件(Stub)
returnValueMap(),
桩件(Stub)
S
Selenium RC,
为 Selenium RC 配置浏览器
Selenium Server,
Selenium Server
setUp(),
基境(fixture)
setUpBeforeClass,
基境共享
setUpBeforeClass(),
基境(fixture)
stringContains(),
assertThat()
stringEndsWith(),
assertThat()
stringStartsWith(),
assertThat()
Stub (桩件),
桩件(Stub)
Stubs (桩件),
跨团队测试
System Under Test (被测系统),
测试替身
T
tearDown(),
基境(fixture)
tearDownAfterClass,
基境共享
tearDownAfterClass(),
基境(fixture)
Template Method (模板方法),
基境(fixture)
Test Dependencies (测试的依赖关系),
测试的依赖关系
Test Double (测试替身),
测试替身
Test Groups (测试分组),
命令行选项
,
分组
Test Isolation (测试隔离),
命令行选项
,
全局状态
Test Listener (测试监听器),
测试监听器
Test Suite (测试套件),
组织测试
,
测试套件
TestDox,
敏捷文档
,
@testdox
throwException(),
桩件(Stub)
timeoutForLargeTests,
@large
timeoutForMediumTests,
@medium
timeoutForSmallTests,
@small
W
Whitelist (白名单),
为代码覆盖率包含或排除文件
will(),
桩件(Stub)
willReturn(),
桩件(Stub)
X
Xdebug,
代码覆盖率分析
XML Configuration (XML 配置),
用 XML 配置来编排测试套件
上一章
下一章
如果对本页有改进建议,请
在 GitHub 上开启任务单
。万分感谢!