当前位置: 首页 > 知识库问答 >
问题:

使用自动连线组件为Spring Boot服务应用程序编写JUnit测试用例

钱瑞
2023-03-14

我正在尝试为我创建的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都这样做。

共有1个答案

莫翰藻
2023-03-14

您可以将测试中的组件自动关联到测试中。

您正在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中工作?