1
我正在尝试为我创建的弹簧服务应用程序编写JUnit测试用例。我已经完成了对应用程序的烟雾测试,并正在编写一系列向前推进的单元测试。使用自动布线组件编写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。它不像春季启动启动时那样自动装配。我是新来的工作春天,所以我不知道最好的方式进行。我认为这没有自动装配,因为我没有像通常那样启动应用程序,而是直接实例化类。
我唯一可能的想法是为了测试的唯一目的而创建一个dao的getter/setter;但是我必须为每个使用的自动布线域和Idk做到这一点,如果它会有任何不需要的结果。
啊,新手的错误。感谢您花时间回答! – Aweava