第一部分 关键概念介绍 2
第1章 Extreme Programming介绍 2
1.1 极限编程概览 2
1.1.1 极限编程开发方法的四大价值 2
1.1.2 极限编程的五个原则 3
1.2 极限编程的12个实践原则 5
1.2.1 计划的制定 5
1.2.2 小版本 5
1.2.3 简单设计 6
1.2.4 测试 6
1.2.5 持续整合 6
1.2.6 重构 7
1.2.7 配对编程 7
1.2.8 代码共享 8
1.2.9 每周只工作40小时 9
1.2.10 现场客户 9
1.2.11 隐喻 9
1.2.12 编码标准 9
1.3 采用极限编程吗 9
1.4 小结 10
第2章 J2EE部署 12
2.1 概述 12
2.2 JAR文件 14
2.2.1 JAR文件和applet 14
2.2.2 可执行的JAR文件 15
2.3 Web应用程序和WAR文件 16
2.4 EJB和EJB JAR文件 18
2.5 企业级应用程序和EAR文件 21
2.6 小结 21
第3章 应用程序范例 23
3.1 概述 23
3.2 简单范例:基于Model2的HelloWorld 23
3.3 范例:宠物商店 24
3.4 宠物商店的最初版本 25
3.4.1 model类(公共的接口) 25
3.4.2 dbmodel类(实现) 26
3.4.3 数据库模型 27
3.4.4 Web接口 28
3.4.5 构建系统 31
3.5 用测试数据设置数据库:Ant小试牛刀 34
3.6 完整的代码清单 39
3.6.1 model包的完整代码清单 39
3.6.2 dbmodel包的完整代码清单 43
3.6.3 test包的完整代码清单 49
3.6.4 JSP和Web.xml的完整代码清单 55
3.7 小结 60
第二部分 掌握工具 62
第4章 使用Ant进行持续整合 62
4.1 概述 62
4.2 Ant使用基础 63
4.3 标准目标 65
4.3.1 简单的范例 65
4.3.2 使用特性一起运作 67
4.3.3 路径设置和fileset设置 68
4.3.4 条件性目标 70
4.3.5 使用过滤器 72
4.3.6 嵌套构建 73
4.4 小结 73
第5章 使用Ant建立Java应用程序 75
5.1 概述 75
5.2 Hello World Model项目 75
5.2.1 model类概览 76
5.2.2 为Model建立项目目录结构 77
5.2.3 为共享类库建立构建文件 77
5.2.4 model项目构建文件的分析 78
5.2.5 运行Ant构建文件 81
5.3 Hello World应用程序项目 82
5.3.1 应用程序的Java类概览 82
5.3.2 为应用程序建立项目目录结构 83
5.3.3 为独立应用程序建立清单文件 83
5.3.4 为独立应用程序建立Ant构建文件 83
5.4 Hello World主项目 86
5.4.1 建立主构建文件 86
5.4.2 关于主构建文件的分析 87
5.5 applet项目 88
5.5.1 applet类概览 88
5.5.2 为applet程序建立构建文件 91
5.5.3 使用Ant构建applet程序 92
5.6 Hello World功能翻新 93
5.7 小结 93
第6章 使用Ant建立J2EE应用程序 94
6.1 概述 94
6.2 Hello World 94
6.3 Web应用程序项目 95
6.3.1 Web应用程序项目的目录结构 95
6.3.2 HelloWorldServlet.java 96
6.3.3 HelloWorldServlet分析 97
6.3.4 HelloWorld.jsp 98
6.3.5 HelloWorld Web应用程序的部署描述符 98
6.3.6 HelloWorld Web应用程序的构建文件 99
6.3.7 构建和部署Web应用程序 105
6.3.8 运行Web应用程序 107
6.3.9 HelloWorld.jsp applet传递 108
6.3.10 在WAR文件中包含applet 109
6.4 企业级JavaBean 110
6.4.1 企业级Bean项目的目录结构 110
6.4.2 HelloWorld实体Bean 111
6.4.3 会话Bean 113
6.4.4 Shadow代理Bean 116
6.4.5 企业级JavaBean部署描述符 118
6.4.6 企业级Bean的构建文件 120
6.4.7 企业级Bean构建文件的分析 123
6.4.8 在Web应用程序构建文件中定义ejb特性 125
6.4.9 运行构建文件 126
6.5 EAR企业级应用程序 127
6.5.1 HelloWorld主项目构建文件 127
6.5.2 企业级应用程序构建文件的分析 129
6.5.3 企业应用程序部署描述符 131
6.6 宠物商店案例学习 132
6.7 小结 134
第7章 使用JUnit进行单元测试 136
7.1 JUnit概述 137
7.1.1 编写一个测试案例 138
7.1.2 使用Ant整合JUnit 143
7.2 案例研究:在宠物商店案例中加入实体Bean 149
7.2.1 现有的JUnit测试概述 149
7.2.2 在宠物商店案例中加入EJB 157
7.2.3 建立一个Ant构建文件用以部署我们的实体Bean 169
7.2.4 修改Test构建文件用以测试我们的实体Bean 175
7.2.5 学习案例的小结 177
7.3 小结 177
第8章 使用Cactus测试容器服务 178
8.1 概述 178
8.2 为什么要做容器内测试 178
8.2.1 隔离测试:模拟对象 178
8.2.2 上下文测试:整合测试 179
8.2.3 一个混合手法 180
8.3 为什么使用Cactus 180
8.4 安装Cactus 181
8.4.1 服务器端安装 182
8.4.2 客户端安装 183
8.4.3 一个简单的范例 184
8.5 Cactus系统架构 185
8.5.1 开始执行 185
8.5.2 beginXXX()方法 186
8.5.3 调用转向器Servlet 186
8.5.4 服务器端安装 186
8.5.5 服务器端执行 187
8.5.6 结果集合和后处理 187
8.6 编写Cactus测试 188
8.6.1 被测试的代码 188
8.6.2 继承适当的类 190
8.6.3 beginXXXQ方法 190
8.6.4 隐含对象 191
8.6.5 setUp()和tearDown() 192
8.6.6 testXXX() 193
8.6.7 endXXX() 193
8.7 Cactus与Ant的使用 195
8.8 Filter测试 196
8.9 JSPTestCase和自定义标记 198
8.10 案例学习:使用自定义标记的宠物商店程序 213
8.10.1 业务需求 213
8.10.2 寻找一个开始点 213
8.10.3 测试案例 214
8.11 小结 219
第9章 使用HttpUnit进行功能测试 220
9.1 为什么要做功能测试 220
9.2 为什么要使用HttpUnit 221
9.3 HttpUnit基础 222
9.3.1 WebClient(客户端)功能介绍 222
9.3.2 响应检查和多页面处理 223
9.4 HttpUnit的高级话题 231
9.4.1 DOM检查 232
9.4.2 Header和Cookies 233
9.4.3 框架页面 233
9.4.4 SSL 234
9.4.5 HttpUnitOptions 234
9.4.6 技术局限性 234
9.5 蜘蛛范例程序 234
9.5.1 蜘蛛程序开发:第一个循环 235
9.5.2 蜘蛛程序开发:二次循环 236
9.5.3 蜘蛛工具将来的工作 240
9.6 小结 240
第10章 使用JMeter测试应用程序性能 241
10.1 概述 241
10.2 JMeter概述 242
10.3 JMeter概念 242
10.4 使用JMeter测试Web应用程序浏览程序 244
10.5 使用JMeter测试Web应用程序的表单条目 249
10.6 使用JMeter测试我们的RDBMS的性能 255
10.7 案例学习:宠物商店 257
10.7.1 业务需求 257
10.7.2 建立测试 259
10.7.3 分析 262
10.7.4 结论 263
10.8 小结 263
第11章 使用JUnitPerf进行负载测试 264
11.1 概述 264
11.2 JUnitPerf概念 264
11.3 TimedTest范例 265
11.4 LoadTest范例 272
11.5 案例学习 273
11.5.1 HTTPUnit测试 273
11.5.2 JMeter配置 275
11.5.3 将它们放在一块 275
11.5.4 结论 278
11.6 小结 279
第三部分 API和标记参考 282
第12章 Ant标记参考 282
12.1 Ant命令行选项 282
12.2 Ant的父元素 283
12.2.1 project标记 283
12.2.2 target标记 283
12.2.3 path标记 284
12.2.4 filter标记 285
12.2.5 tstamp标记 285
12.3 Ant关键任务 286
12.3.1 Ant任务 286
12.3.2 antcall任务 286
12.3.3 available任务 287
12.3.4 echo任务 288
12.3.5 fail任务 288
12.3.6 property任务 288
12.3.7 taskdef任务 289
12.4 目录和文件系统任务 289
12.4.1 chmod任务 289
12.4.2 copy任务 290
12.4.3 delete任务 290
12.4.4 mkdir任务 291
12.4.5 move任务 291
12.4.6 touch任务 292
12.5 外部执行任务 292
12.5.1 apply任务 292
12.5.2 exec任务 293
12.5.3 execon任务 294
12.5.4 java任务 295
12.5.5 javac任务 295
12.5.6 sql任务 296
12.6 文件库任务 298
12.6.1 jar任务 298
12.6.2 war任务 298
12.6.3 zip任务 299
12.6.4 unjar、unzip和unwar任务 300
12.7 文件读写和控制 300
12.7.1 replace任务 300
12.7.2 mail任务 301
12.8 源代码控制任务 301
12.8.1 cvs任务 301
12.8.2 get任务 302
12.9 一些关键的可选任务 302
12.9.1 junit任务 302
12.9.2 junitReport任务 303
12.10 常用的嵌套参数和元素 304
12.10.1 classpath元素 304
12.10.2 mapper元素 305
12.10.3 fileset元素 306
12.10.4 patternset元素 306
12.10.5 zipfileset元素 306
第13章 Ant API参考 308
13.1 概述 308
13.2 org.apache.tools.ant包 309
13.2.1 AntClassLoader类 309
13.2.2 BuildEvent类 310
13.2.3 BuildException类 310
13.2.4 BuildListener接口 311
13.2.5 BuildLogger接口 312
13.2.6 DefaultLogger类 313
13.2.7 DesirableFilter类 314
13.2.8 DirectoryScanner类 314
13.2.9 FileScanner接口 316
13.2.10 IntrospectionHelper类 317
13.2.11 Location类 318
13.2.12 Main类 319
13.2.13 PathTokenizer类 319
13.2.14 Project类 319
13.2.15 ProjectHelper类 323
13.2.16 RuntimeConfigurable类 324
13.2.17 Target类 324
13.2.18 Task类 326
13.2.19 TaskAdapter类 327
13.2.20 UnknownElement类 328
13.2.21 XmlLogger类 328
13.3 小结 329
第14章 JUnit API参考 331
14.1 junit.framework包 331
14.1.1 Assert类 331
14.1.2 Protectable接口 334
14.1.3 Test接口 335
14.1.4 TestCase类 335
14.1.5 TestListener接口 339
14.1.6 TestFailure类 339
14.1.7 TestResult类 340
14.1.8 TestSuite类 342
14.2 junit.extensions包 344
14.2.1 ActiveTestSuite类 344
14.2.2 ExceptionTestCase类 345
14.2.3 RepeatedTest类 346
14.2.4 TestDecorator类 347
14.2.5 TestSetup类 348
第15章 Cactus API参考 350
15.1 概述 350
15.2 org.apache.cactus包 350
15.2.1 AbstractTestCase类 350
15.2.2 Cookie类 353
15.2.3 FilterTestCase类 357
15.2.4 JspTestCase类 358
15.2.5 ServiceDefinition类 359
15.2.6 ServiceEnumeration类 359
15.2.7 ServletTestCase类 359
15.2.8 ServletTestRequest类 不推荐 362
15.2.9 ServletURL类 363
15.2.10 WebRequest类 365
15.2.11 WebResponse类 367
15.2.12 WebTestResult类 368
15.3 org.apache.cactus.util包 369
15.3.1 AssertUtils类 不推荐 369
15.3.2 ClientCookie类 不推荐 370
15.4 org.apache.cactus.server包 371
15.4.1 FilterConfigWrapper类 371
15.4.2 HttpServletRequestWrapper类 372
15.4.3 PageContextWrapper类 373
15.4.4 RequestDispatcherWrapper类 373
15.4.5 ServletConfigWrapper类 373
15.4.6 ServletContextWrapper类 374
第16章 HttpUnit API参考 375
16.1 概述 375
16.2 com.meterware.httpunit包 375
16.2.1 AuthorizationRequired-Exception类 375
16.2.2 GetMethodWebRequest类 376
16.2.3 HTMLSegment接口 376
16.2.4 HttpException类 379
16.2.5 HttpInternalErrorException类 379
16.2.6 HttpNotFoundException类 380
16.2.7 HttpUnitOptions类 380
16.2.8 HttpUnitUtils类 381
16.2.9 IllegalRequestParameterException类 382
16.2.10 MessageBodyWebRequest类 383
16.2.11 PostMethodWebRequest类 383
16.2.12 PutMethodWebRequest类 384
16.2.13 SubmitButton类 385
16.2.14 TableCell类 385
16.2.15 WebClient类 386
16.2.16 WebConversation类 389
16.2.17 WebForm类 390
16.2.18 WebLink类 392
16.2.19 WebRequest类 393
16.2.20 WebResponse类 397
16.2.21 WebTable类 400
第17章 JUnitPerf API参考 402
17.1 com.clarkware.junitperf包 402
17.1.1 ConstantTimer类 402
17.1.2 LoadTest类 402
17.1.3 RandomTimer类 406
17.1.4 ThreadBarrier类 406
17.1.5 ThreadedTest类 407
17.1.6 ThreadedTestGroup类 407
17.1.7 TimedTest类 408
17.1.8 Timer接口 410