【发布时间】:2018-04-01 19:05:26
【问题描述】:
我正在尝试为我创建的 Spring 服务应用程序编写 JUnit 测试用例。我已经完成了应用程序的冒烟测试,并希望继续编写一系列单元测试。
我开始测试服务层。我的 @AutoWired 组件(包括我的 DAO 对象)遇到问题。运行 Spring 应用程序本身时,一切正常。但是,在运行我的 JUnit 测试时,它们不会自动装配并保持为空,从而导致 NPE。这是我正在使用的框架:
服务文件:
@Component
public class WebServiceImpl implements WebService{
@Autowired
WebDAO webDAO;
@Override
public List<String> getItems(){
List<String> items = webDAO.getItems();
/*
* some filtering/actions done here
*/
return items;
}
}
测试文件:
@RunWith(SpringRunner.class)
@SpringBootTest
public class ServiceTests{
private WebService service;
@Before
public void setup(){
this.service = new WebServiceImpl();
}
@Test
public void getItemsTest(){
List<String> items = this.service.getItems();
assertNotNull(items);
}
}
运行此测试时,我从 webDAO 获得了 NPE。它不会像通常在 spring boot 启动中那样自动连接。我是 Spring 的新手,所以我不确定最好的方法。我认为这没有自动装配,因为我没有像通常那样启动应用程序,而是直接实例化类。
我唯一可能的想法是在这里为 dao 创建一个 getter/setter,仅用于测试;但是,如果它会产生任何不需要的结果,我将不得不对使用的每个自动装配字段和 Idk 执行此操作。
【问题讨论】:
标签: java spring unit-testing junit