我正在尝试为我创建的spring服务应用程序编写JUnit测试用例。我已经完成了应用程序的冒烟测试,并期待着编写一系列单元测试。
我从测试服务层开始。我遇到了@AutoWired组件的问题,包括我的DAO对象。当运行Spring应用程序本身时,一切正常。但是,当运行我的JUnit测试时,它们不会自动连线并保持为null,从而导致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启动时那样自动启动。我刚开始工作,所以我不确定最好的方法是什么。我假设这不是自动生成的,因为我没有像通常那样启动应用程序,而是直接实例化类。
我唯一可能的想法是为dao创建一个getter/setter,其唯一目的是测试;然而,如果有任何不想要的结果,我必须对使用的每个自动连线字段和Idk都这样做。
您可以将测试中的组件自动关联到测试中。
您正在Spring容器之外创建组件,因此它不了解该组件。
private WebService service;
@Before
public void setup(){
this.service = new WebServiceImpl();
}
应该是
@Autowired
private WebService service;
我有一个应用类 我有控制器课 并且,我想为Application test编写一个测试用例,以确保创建的实例类型为HelloController 但是,我在自动连接 hello控制器变量时遇到错误(找不到 hello 控制器类型的 bean)。根据我的理解,@SpringBootTest应该创建上下文并返回一个实例。我们不需要编写任何上下文 xml 或使用任何注释Config 类来获取实例。缺少了
如何为RestController,Service和DAO层编写JUnit测试用例? 我试过 如何验证rest控制器和其他层中的CRUD方法?
问题内容: 我有一个在一个(主)线程中工作的Java代码。从主线程中,我产生了一个新线程,在其中进行服务器调用。服务器调用完成后,我在新线程中进行了一些工作,然后代码加入了主线程。 我正在使用Eclipse Jobs进行服务器调用。 我想知道,如何为此编写一个JUnit测试用例。 问题答案: 您可能需要重组代码,以便可以轻松对其进行测试。 我可以看到几个不同的测试区域: 线程管理代码:启动线程并可
customer-Mapper.xml daoimpl.java
有人能告诉我,如何用实际的DB连接为Spring Boot应用程序编写JUnit测试用例吗? 我的意思是,当我们右键单击src/Test/java中的@testclass,然后单击runasjunittest,我们需要自动连接我们在src/main/java中开发的所有服务和DAO bean,控制应该从@Test类流向服务,服务流向DAO,查询应该使用@PersistenceContext Ent
使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?