我正在开发一个 Spring MVC 项目,并且我对源代码树中的所有各种组件进行了单元测试。
例如,如果我有一个HomeController
需要LoginService
注入的控制器,那么在我的单元测试中,HomeControllerTest
我只需像平常一样(在 Spring 之外)实例化对象并注入属性:
protected void setUp() throws Exception {
super.setUp();
//...
controller = new HomeController();
controller.setLoginService( new SimpleLoginService() );
//...
}
这对于将每个组件作为一个独立的单元进行测试非常有用——除了现在我在项目中有几十个类,在编写了一个类并为它编写了一个成功的单元测试之后,我一直忘记更新我的 Spring MVC 上下文文件已部署应用程序中的实际接线。我发现当我将项目部署到 Tomcat 时忘记更新上下文文件并从非连线 bean 中找到一堆 NullPointers。
所以,这是我的问题:
这是我的第一个 Spring 项目 - 像我所做的那样为单个 bean 创建单元测试是否正常,然后创建第二套测试(集成测试)来测试所有内容在实际应用程序上下文中是否按预期工作?对此是否有既定的最佳实践?
此外,如何将单元测试与集成测试分开?我有所有源代码
src
,单元测试在test
- 是否应该有第二个测试文件夹(例如test-integration
)用于集成测试用例?
由于这是我的第一个 Spring 项目,我很好奇其他人通常是如何做这种事情的——与其重新发明轮子,我更愿意询问社区的其他人。