不要用TestCase的构造函数初始化Fixture而要用setUp()和tearDown()方法
不要依赖或假定测试运行的顺序因为JUnit利用Vector保存测试方法所以不同的平台会按不同的顺序从Vector中取出测试方法
避免编写有副作用的TestCase例如如果随后的测试依赖于某些特定的交易数据就不要提交交易数据简单的会滚就可以了
对于我们来说有时是必须要提交以至于有副作用的
例如在执行插入后数据库显然会多出一条数据来那么必须在随后每个测试自己消除自己的副作用
在这里就是自己再删除刚插入的数据(这时候需要考虑到这个善后的工作不能自己就不能有副作用删除多了其他的数据)
这里的副作用还指影响到周围环境因为我们现在工作的人比较多所以最好大家的测试服务器能够分开来例如一个人一个Database实例(可以建得稍微小一点)或者一个人一个数据库 注意将这些个人之间有区别的内容用常量在每个人自己的所有程序中公用而不是分布在各个位置 否则以后要改换测试服务器所有的程序都需要改动
为了保证测试程序能够很容易的到处执行请保证大家的数据库服务器的测试数据全部一致 否则就不能做到很容易得拿到FJ也可以很容易的运行所以需要准备测试数据集 包括Schema table stored procedure等数据库对象的结构一致 还包括数据库的数据内容保持一致
当继承一个测试类时记得调用父类的setUp()和tearDown()方法
将测试代码和工作代码放在一起一边同步编译和更新(使用Ant中有支持junit的task)
测试类和测试方法应该有一致的命名方案如在工作类名前加上test从而形成测试类名
可能这里我们需要改动将函数名和我们的测试用例的编号一致起来
确保测试与时间无关不要依赖使用过期的数据进行测试导致在随后的维护过程中很难重现测试
如果你编写的软件面向国际市场编写测试时要考虑国际化的因素不要仅用母语的Locale进行测试
尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法可以使代码更为简洁
这个内容有其关键assert语句的好坏直接影响到测试的正确性 因为assert就是用于当前测试项的正确性的
测试要尽可能地小执行速度快
)将所有的数据库的测试数据用ODBC程序自动生成的 用户可以简单的修改ConnectionString然后运行程序就可以创建生成数据库/数据库表/存储结构并且自动插入数据
)为了保证多个测试人员的不干扰建议分别各自单独使用自己的数据库否则会因为一个自己的错误影响别人的工作
)在自己的程序中所有涉及环境的内容都用单独放到一个类中用static常量共享使用(这样就便于很容易的更换环境再进行测试做到很容易的移植测试环境)
)关于数据库表结构我建议测试表中含有一个主键我们在插入数据的时候保证测试用例测试用例程序测试用例程序中的数据这三者的编号一致起来便于出现问题时可以排除数据