При разработке приложения Spring Boot необходимо тщательное тестирование, чтобы гарантировать его надежность и функциональность. Аннотация @SpringBootTestпредоставляет мощный механизм для комплексного тестирования всего приложения. В этой статье мы рассмотрим различные методы и примеры кода для тестирования приложения Spring Boot с использованием @SpringBootTest.
Метод 1: тестирование с помощью MockMvc
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testGetUserById() throws Exception {
mockMvc.perform(get("/users/{id}", 1))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1))
.andExpect(jsonPath("$.name").value("John Doe"));
}
}
Метод 2: тестирование с помощью TestRestTemplate
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserControllerTest {
@LocalServerPort
private int port;
@Autowired
private TestRestTemplate restTemplate;
@Test
public void testGetUserById() {
User user = restTemplate.getForObject("http://localhost:" + port + "/users/1", User.class);
assertEquals(1, user.getId());
assertEquals("John Doe", user.getName());
}
}
Метод 3. Тестирование с помощью @DataJpaTest
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
@DataJpaTest
public class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
public void testFindById() {
User user = new User(1, "John Doe");
userRepository.save(user);
User foundUser = userRepository.findById(1).orElse(null);
assertEquals(user.getName(), foundUser.getName());
}
}
В этой статье мы рассмотрели различные методы тестирования приложения Spring Boot с использованием аннотации @SpringBootTest. Мы рассмотрели тестирование с помощью MockMvc, TestRestTemplate и @DataJpaTest, предоставив примеры кода для каждого метода. Используя эти методы тестирования, разработчики могут обеспечить надежность и правильность своих приложений Spring Boot.