SpringSide推荐必须要写的两种测试:
一是直接使用真实Dao的业务层测试
二是使用Selenium的Web集成测试
业务层测试详见Spring下的单元测试,之所以采用真实Dao而不是MockObject,主要是由实际考虑,一来减低编写用例的成本,二来使测试更全面真实。当然这带来隔离度的问题,由大家自行取舍。
Dao层CRUD的测试也包含在了业务层测试中,作为检验数据库及ORM映射正确性的有力工具。
Controller层测试作用不大,因此在SpringSide里直接以Selenium集成测试代替了。
Selenium集成测试是让PM真正最后放心的测试。以前一般由测试人员编写测试用例文档后,每次手工执行。而Selenium可以通过FireFox插件记录操作和对单元测试的支持,以很低的成本将这一过程自动化,详见Selenium集成测试概述 与Selenium参考手册翻译。
Dao的单元测试可以利用Spring Dao测试基类的自动回滚功能避免影响数据库,而Selenium则一定会影响数据库了(除非是用嵌入式数据库),因此采用DBUnit来保持测试前后数据库的数据,详见DBUnit使用。
虽然提倡业务层使用真实Dao而不是MockObject,但业务层测试和SpringSide核心测试,尤其是框架型的测试中,仍然有很多地方要用到MockObject,我们选了EasyMock作为MockObject方案,详见EasyMock使用。