我正在开发一个现有代码库的Web应用程序,可能已经存在了10年,有大约1000个类文件和大约100,000行代码。好消息是代码组织良好,业务逻辑与控制器域分离,并且具有高度的可重用性。坏消息是只有测试套件的开头(JUnit);最多可能有12打测试。
代码通常用于企业Java项目。有一个stuts-esque控制器包,该模型几乎完全由数据对象组成,有一个类似于数据库层的hibernate,主要封装在数据访问对象中,还有一些简单,自包含和逻辑的服务包。构建此测试套件的最终目标是实现持续集成开发过程。
欢迎任何建议。谢谢!
答案 0 :(得分:7)
首先阅读Working Effectively with Legacy Code(简短版here)。接下来,我将编写几个端到端的冒烟测试,以涵盖最常见的用例。以下是有关如何处理它的一些想法:http://simpleprogrammer.com/getting-up-to-bat-series/
然后,当我需要更改系统的某些部分时,我将通过重点单元测试(参考上述书籍)进行覆盖,然后进行更改。系统 - 或者至少是最常更换的部分 - 将会被更好地覆盖,并且使用它会变得更容易。
答案 1 :(得分:3)
我会创建一些集成测试。因为它们需要很多代码,所以当你搞砸了大时间时,你可能会遇到错误。
我不会'建立一个测试套件',而是在更改某个部件之前为它定义一个测试集,然后再改变它。
我建议查看测试覆盖率工具(我不编码Java,所以不知道哪种工具最适合Java)。虽然它没有告诉你什么时候你进行了足够的测试,它确实会告诉你什么时候测试得太少了;)
祝你好运!答案 2 :(得分:2)
如果该项目尚未进行专业化,我会这样做。另外一定要使用像mockito这样的模拟框架。 Hudson是一个很好的CI工具,可以很好地与maven集成。
答案 3 :(得分:1)