内容简介
第1章 起步
测试
设计
一个简单的测试
JUnit
增加一个测试
创建Student对象
创建Student类
构造函数
局部变量
从方法返回一个值
断言
实例变量
总结这个测试
重构
this
private
命名约定
空白区域
练习
第2章 Java基础
课程安排
学生注册
int
初始化
默认构造函数
测试套件
SDK和java.util.ArrayList
增加对象
渐增重构
内存中的对象
包和import语句
java.lang包
默认包和package语句
setUp方法
更多的重构
类常量
Dates
重载构造函数
不赞成警告
重构
用Calendar创建日期
注释
Javadoc注释
练习
第3章 字符串和包
字符和字符串
字符串
StringBuilder
系统属性
遍历所有的学生
单职责原则
重构
System.out
使用System.out
重构
包结构
访问修饰符
使用Ant
练习
类方法
第4章 类方法和类变量
类变量
使用类方法操作类变量
静态导入
增量
工厂方法
简单设计
静态的危险
使用静态所需要注意的
布尔型
Jeff静态规则
测试就是文档
关于初始化的更多内容
异常
再看基本类型的初始化
练习
第5章 接口和多态
排序:准备工作
排序:Collections.sort
CourseReportTest
接口
为什么需要接口
实现Comparable
根据学科和编号进行排序
If语句
学生的成绩
浮点数
测试成绩
重构
枚举
多态
使用接口引用
ArrayList和List接口
练习
第6章 继承
switch语句
Case标记只是标记
Map
继承
抽象类
方法扩展
重构
增强的枚举Grade
夏季课程安排
调用基类的构造函数
重构
深入构造函数
继承和多态
子合约原则
练习
第7章 遗留元素
分解学生全名
循环结构
比较Java循环
重构
循环控制语句
三元操作符
遗留的集合类
迭代器
迭代器和for-each循环
类型转换
包装类
数组
重构
练习
第8章 异常和日志
异常
异常处理
检查异常
异常层次关系
创建自己的异常类型
检查异常和非检查异常
消息
捕获多个异常
重新抛出异常
堆栈跟踪
finally块
重构
日志
Java中的日志
测试日志
将日志定向到文件
日志的测试哲学
更多关于FileHandler
日志等级
日志层次结构
日志补充说明
练习
第9章 Map和相等性
逻辑操作符
短路
哈希表
课程
重构Session
相等性
相等性的定义
苹果和橙子
集合与相等性
哈希表
冲突
一个理想的哈希算法
hashCode最后一个要点
更多关于HashMap
其它哈希表和Set实现
toString
字符串和相等性
练习
第10章 数学
BigDecimal
更多关于基本数字类型
整数运算
数字类型转换
运算优先级
NaN(Not a Number)
无穷大
数字溢出
位操作
iava.lang.Math
数字包装类
随机数
练习
第11章 IO(输入/输出)
组织
字符流
写入文件
java.io.File
学生用户界面
字节流与转换
测试应用
数据流
CourseCatelog
高级流
对象流
随机存取文件
学生字典
sis.db.DataFileTest
静态内嵌(static nested)类和内联(inner)类
sis.db.DataFile
sis.db.KeyFileTest
sis.db.KeyFile
sis.util.IOUtilTest
sis.util.IOUtil
sis.util.TestUtil
方案的改进
练习
第12章 反射及其他高级主题
再顾Mock对象
Jim Bob ACH接口
Mock类
Account类的实现
匿名内联类
适配器(Adapter)
访问外围类中的变量
折衷
反射(Refelection)
使用JUnit代码
Class类
建立测试套件
类修饰符
动态代理
安全帐号类
建立安全帐号方案
SecureProxy类
反射的问题
练习
第13章 多线程
多线程
搜索(Search)服务器
Search类
更少依赖的测试
服务器
测试中的等待
创建并运行线程
合作式协作式(cooperative)与可抢占的(preemptive)多任务
同步
使用Runnable创建线程
synchronized
BlockingQueue
同步的集合类
停止线程
Wait/Notify
wait和notify的补充注意事项
锁与条件
线程优先级
死锁
ThreadLocal
Timer类
Thread的杂项
练习
总结:同步的基本设计原则
第14章 范型
参数化类型
集合框架(Collection Framework)
多类型参数
创建参数化类型
擦拭法
上限(Upper Bound)
通配符(Wildcard)
使用通配符的隐含问题(Implication)
范型方法
通配符捕获(Wildcard Capture)
Super
附加限界
原始类型(Raw Type)
Checked集合
数组(Array)
额外的局限
反射
最后的注意事项
练习
断言
第15章 断言与注解
assert语句vs.JUnit的Assert方法
注解(Annotation)
建立一个测试工具
TestRunnerTest
TestRunner
@TestMethod注解
保留(Retention)
注解的目标(Annotation Tagets)
跳过测试方法
修改TestRunner
单值(Single-Value)注解
TestRunner的用户界面类
数组参数
多个参数的注解
缺省值
附加返回类型与复式注解类型
包注解
兼容性考虑
总结
关于注解的额外注意事项
练习
附加课Ⅰ Swing,第一部分
Swing
起步
Swing应用的设计
面板(Panel)
重构(Refactory)
更多的控件
重构(Refactory)
按钮点击与ActionListener
列表Model
应用
布局
继续前进
附加课Ⅱ Swing,第二部分
界面美化的杂项
体验(feel)
表格(Table)
反馈(Feedback)
响应性(Responsiveness)
余下的任务
最后的注意事项
附加课Ⅲ Java的杂项
JAR
正则表达式
克隆(Cloning) 协变(Covariance)
JDBC
国际化(Internationalization)
按引用调用vs.按值调用
Java的边缘地带
还有哪些内容
附录A 敏捷Java的术语表
附录B Java操作符的优先规则
附录C IDEA入门
IDEA
Hello项目
运行测试
利用IDEA的优势
Agile Java References
索引