【发布时间】:2023-04-09 19:01:01
【问题描述】:
我正在使用 spring 3 mvc/security 框架。
我创建了一个 Controller 类,它引用了要从中加载数据的存储库。类用@Controller注解,repository类用@Repository注解,repository的实例是@Autowired。
但是,当我尝试进行单元测试时,自动装配的实例会引发空指针异常。
现在,我知道因为它是自动装配的,所以它需要在 spring 上下文中才能被拾取。但是我觉得如果我使用@RunsWith() 那么它就变成了一个集成测试。我真的很想将集成测试(使用@RunsWith)和此方法的单元测试分开。关于如何解决这个空指针异常的任何想法?只在我的控制器类上创建 getter/setter 方法可以吗?:
存储库类:
@Repository
public class Repository{
....
}
控制器类:
@Controller
public class Controller{
@Autowired
private Repository repo;
....
public String showView(){
repo.doSomething();
}
测试类:
public ControllerTest {
@Test
public shouldDoTestOfShowView(){
}
}
【问题讨论】:
-
那么在控制器中创建 getter/setter 是最佳实践吗?
标签: java spring unit-testing integration-testing