【发布时间】:2010-09-21 20:36:14
【问题描述】:
我正在开发一个 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 项目,我很好奇其他人通常是如何做这种事情的 - 与其重新发明轮子,我更愿意询问社区的其他人。
【问题讨论】:
标签: java tdd junit spring-mvc integration-testing