spring boot单元测试

发布于:2025-02-17 ⋅ 阅读:(159) ⋅ 点赞:(0)

在pom文件中添加测试依赖

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
 </dependency>

复制粘贴自动创建的单元测试类

文件名改为HelloControllerTests

编写单元测试方法

@Autowired
private HelloController helloController;

@Test
public void testHello() {

    String hello = helloController.hello();
    System.out.println(hello);
    Assert.isTrue("hello Spring Boot".equals(helloController.hello()), "helloController.hello()的返回值必须等于hello Spring Boot");

}

使用MockMvc来做单元测试 

import org.junit.jupiter.api.Test;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;  
import org.springframework.test.web.servlet.MockMvc;

import cn.zptc.autoapp.demos.web.HelloController;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;  
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;  
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;  
  
@WebMvcTest(HelloController.class)  
public class HelloControllerTest2 {  
  
    @Autowired  
    private MockMvc mockMvc;  
  
    @Test  
    public void whenGetGreeting_thenCorrectResponse() throws Exception {  
        mockMvc.perform(get("/hello"))  
                .andExpect(status().isOk())  
                .andExpect(content().string("Hello, World!"));  
    }  
}

这些测试通常运行得很快,因为它们不依赖于整个Spring应用程序的上下文启动。

它们专注于测试Controller的逻辑,而不需要启动整个服务器或数据库连接

启动tomcat来做单元测试

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;

import static org.assertj.core.api.Assertions.assertThat;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyControllerTest {

    @LocalServerPort
    private int port;

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void testSayHello() {
        String url = "http://localhost:" + port + "/hello";
        String response = restTemplate.getForObject(url, String.class);
        assertThat(response).isEqualTo("Hello, World!");
    }
}

执行测试方法

光标定位到方法名称上,右键--》Run As --》JUnit Test。


网站公告

今日签到

点亮在社区的每一天
去签到