第1章 序言 1
1.1 自信地编码 2
1.2 什么是单元测试 3
1.3 为什么要使用单元测试 4
1.4 我需要做什么呢 5
1.5 如何进行单元测试 7
1.6 不写测试的借口 7
1.7 本书概要 12
第2章 你的首个单元测试 13
2.1 计划你的测试 14
2.2 测试一个简单的方法 15
2.3 使用NUnit来运行测试 16
2.4 运行例子 22
2.5 更多的测试 26
第3章 使用NUnit编写测试 27
3.1 构建单元测试 27
3.2 NUnit的各种断言 29
3.3 NUnit框架 31
3.4 NUnit测试的组成 33
3.5 自定义NUnit断言 40
3.6 NUnit和异常 41
3.7 临时忽略一些测试 42
第4章 测试哪些内容:Right-BICEP 45
4.1 结果是否正确 46
4.2 边界条件 49
4.3 检查反向关联 50
4.4 使用其他手段来实现交叉检查 50
4.5 强制产生错误条件 51
4.6 性能特性 52
第5章 CORRECT边界条件 55
5.1 一致性 56
5.2 有序性 57
5.3 区间性 59
5.4 引用/耦合性 62
5.5 存在性 63
5.6 基数性 64
5.7 时间性 66
5.8 自己动手尝试 68
第6章 使用Mock对象 73
6.1 简单的替换 74
6.2 Mock对象 75
6.3 正规化Mock Obiects 79
6.4 什么时候不应使用Mock 93
第7章 好的测试所具有的品质 95
7.1 自动化 96
7.2 彻底的 97
7.4 独立的 99
7.3 可重复 99
7.5 专业的 100
7.6 对测试进行测试 102
第8章 在项目中进行测试 105
8.1 把测试代码放到哪儿 105
8.2 测试的礼貌 108
8.3 测试的频率 109
8.4 测试与遗留代码 110
8.5 测试与评审 113
9.1 面向测试的设计 117
第9章 设计话题 117
9.2 为测试而重构 119
9.3 测试类的不变性 130
9.4 测试驱动的设计 132
9.5 测试无效的参数 134
附录A Gotchas 137
A.1 只要代码能工作就可以 137
A.2 “冒烟”测试 137
A.4 浮点数问题 138
A.3 “请让我的机器来运行” 138
A.5 测试耗费的时间太多了 139
A.6 测试总是失败 139
A.7 在某些机器上测试失败 140
附录B 资源 141
B.1 网络资源 141
B.2 参考书目 143
附录C 注重实效的单元测试:总结 145
附录D 习题答案 147
索引 155