spring boot如何测试接口

fiy 其他 130

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring Boot提供了多种方式来测试接口,下面介绍两种常用的方式:

    一、使用JUnit和MockMvc进行控制器层面的接口测试

    1. 导入相应的依赖
      在pom.xml文件中添加以下依赖:
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
       <scope>test</scope>
       <exclusions>
           <exclusion>
               <groupId>org.junit.vintage</groupId>
               <artifactId>junit-vintage-engine</artifactId>
           </exclusion>
       </exclusions>
    </dependency>
    
    1. 创建测试类
      在测试目录下创建测试类,并使用@RunWith(SpringJUnit4ClassRunner.class)注解指定使用的测试运行器。
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest
    public class UserControllerTest {
    
       @Autowired
       private WebApplicationContext webApplicationContext;
      
       private MockMvc mockMvc;
      
       @Before
       public void setup() {
           mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
       }
    
       // 编写测试方法
       @Test
       public void testGetUser() throws Exception {
           mockMvc.perform(MockMvcRequestBuilders.get("/user/{id}", 1))
               .andExpect(MockMvcResultMatchers.status().isOk())
               .andExpect(MockMvcResultMatchers.jsonPath("$.username").value("testUser"));
       }
    }
    
    1. 编写测试方法
      通过mockMvc.perform方法模拟请求,并通过andExpect方法对返回结果进行验证。

    注意:这里的/user/{id}是示例接口地址,需要根据实际情况进行修改。

    二、使用RestTemplate进行HTTP层面的接口测试

    1. 导入相应的依赖
      在pom.xml文件中添加以下依赖:
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
       <scope>test</scope>
    </dependency>
    
    1. 创建测试类
      在测试目录下创建测试类,并使用@RunWith(SpringRunner.class)注解指定使用的测试运行器。
    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class UserControllerTest {
    
       @LocalServerPort
       private int port;
    
       private RestTemplate restTemplate = new RestTemplate();
    
       // 编写测试方法
       @Test
       public void testGetUser() throws Exception {
           ResponseEntity<User> response = restTemplate.getForEntity("http://localhost:" + port + "/user/{id}", User.class, 1);
           assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
    
           User user = response.getBody();
           assertThat(user.getUsername()).isEqualTo("testUser");
       }
    }
    
    1. 编写测试方法
      使用RestTemplate发送HTTP请求,并通过ResponseEntity获取返回结果进行验证。

    注意:这里的/user/{id}是示例接口地址,需要根据实际情况进行修改。另外,要注意指定测试服务器的端口号,即localhost:port

    以上就是Spring Boot测试接口的两种常用方式,可以根据实际情况选择适合的方式进行接口测试。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring Boot提供了多种测试接口的方法和工具,下面给出了Spring Boot测试接口的五个步骤:

    1. 配置测试环境:在测试类上使用注解@SpringBootTest来指定测试类所需要的Spring Boot环境。这个注解会自动创建一个测试用的Spring应用程序上下文,并加载配置、组件和依赖项。

    2. 使用MockMvc发起请求:MockMvc是Spring提供的用于模拟HTTP请求和验证相应的API。通过使用MockMvc来发起请求,可以在不启动服务器的情况下测试控制器和接口。使用@Autowired注解将MockMvc注入到测试类中,然后使用MockMvc的各种方法来发起请求,例如perform()get()post()等。

    3. 编写测试用例:编写测试用例确保接口的正确行为。可以使用Junit或其他测试框架编写测试用例,使用断言来验证接口的响应是否符合预期。在测试类中使用注解@Test来标识测试方法,然后编写各种测试用例。

    4. 使用MockBean模拟依赖:在进行接口测试时,有时需要模拟某些依赖的行为。可以使用@MockBean注解来创建模拟对象,并通过@Autowired注入到被测试的类中。这样可以在不依赖实际依赖的情况下进行测试,提高测试效率和可靠性。

    5. 使用断言验证结果:在编写测试用例时,可以使用各种断言来验证接口的返回结果是否正确。例如,可以使用assertThat()断言来验证接口返回的状态码、返回的数据格式、返回的数据内容等。使用断言可以确保接口在各种情况下都能正确地返回预期的结果。

    总结:使用Spring Boot测试接口的步骤包括:配置测试环境、使用MockMvc发起请求、编写测试用例、使用MockBean模拟依赖、使用断言验证结果。通过这些步骤,可以对Spring Boot应用程序的接口进行全面的测试。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring Boot提供了多种方式来测试接口,以下是常用的几种方法。

    1. 使用JUnit测试:使用JUnit来编写测试用例,通过注入测试对象并调用接口方法来测试接口的功能和返回结果。下面是一个示例:
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class InterfaceTest {
    
        @Autowired
        private TestRestTemplate restTemplate;
    
        @Test
        public void testInterface() {
            ResponseEntity<String> response = restTemplate.getForEntity("/api/interface", String.class);
            assertEquals(HttpStatus.OK, response.getStatusCode());
            assertEquals("Hello World", response.getBody());
        }
    }
    
    1. 使用MockMvc模拟请求:使用MockMvc来模拟HTTP请求,可以测试接口的请求路径、请求方法、请求参数等。下面是一个示例:
    @SpringBootTest
    @AutoConfigureMockMvc
    public class MockMvcTest {
    
        @Autowired
        private MockMvc mockMvc;
    
        @Test
        public void testInterface() throws Exception {
            mockMvc.perform(get("/api/interface"))
                    .andExpect(status().isOk())
                    .andExpect(content().string("Hello World"));
        }
    }
    
    1. 使用WebTestClient测试:使用WebTestClient来发送HTTP请求并验证响应,适用于响应式Web应用程序。下面是一个示例:
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class WebTestClientTest {
    
        @Autowired
        private WebTestClient webTestClient;
    
        @Test
        public void testInterface() {
            webTestClient.get()
                    .uri("/api/interface")
                    .exchange()
                    .expectStatus().isOk()
                    .expectBody(String.class).isEqualTo("Hello World");
        }
    }
    

    以上是常用的三种测试方法,可以根据项目的需求选择适合自己的方式来测试接口。同时,还可以使用Mockito等工具来进行接口的单元测试,对于依赖其他组件的接口,可以使用mock对象进行模拟。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部