Prueba de la unidad o de Pruebas de Integración en la primavera de arranque

Nikon:

Miré varias tutorial en línea relacionados con las pruebas en Spring Booty se confundió por la forma en que se refieren las pruebas.

Algunos artículos se refieren a pruebas de controlador que el uso @WebMvcTestde la anotación como Unit Testmientras que algunos se refieren como Integration Test. No está seguro de cuál es la correcta.

Las mismas preguntas se aplica a prueba capa de repositorio con @DataJpaTest.

He tras dos pruebas escritas en mi solicitud, una para el controlador y otro para el repositorio.

En la parte inferior Tengo algunas preguntas con respecto a ambos. Por favor guíe.

UserControllerTest.java

@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;
    @MockBean
    private UserRepository userRepository;

    @Test
    public void signUp() throws Exception {
        this.mockMvc.perform(get("/signup")).andExpect(status().isOk());
    }

}

UserRepositoryTest.java

@RunWith(SpringRunner.class)
@DataJpaTest
public class UserRepositoryTest {

    @Autowired
    private TestEntityManager entityManager;
    @Autowired
    private UserRepository userRepository;

    @Test
    public void whenFindByName_thenReturnEmployee() {
        // given
        User u = new User();
        u.setName("ab");
        u.setEmail("[email protected]");
        entityManager.persistAndFlush(u);
        // when
        Optional<User> user = userRepository.findById(1L);
        // then
        assertTrue(user.isPresent());
    }

}

Mis preguntas son:

  1. Hace la anotación @WebMvcTest, @DataJpaTesto @SpringBootTestdetermina el tipo de prueba ( Unito Integration) o es el uso de @MockBeandentro de la prueba de que lo determina?
  2. Si se asume que UserControllerTest.javaes una prueba de unidad que estamos burlando de la userRepositorydependencia aquí con @MockBean private UserRepository userRepositorymientras que en UserRepositoryTest.javaestamos Autowiring con @Autowired private UserRepository userRepository. Por qué ??
Brandon:

La principal diferencia entre las pruebas unitarias y pruebas de integración utilizando la primavera de arranque, es que las pruebas unitarias se pueden ejecutar de manera aislada, mientras que las pruebas de integración serán arrancar contexto primavera antes de que comience la ejecución.

Correr en el aislamiento requiere que se burlan de sus dependencias basadas en el controlador que está probando. Al hacer esto, se va a permitir a sí mismo para probar los casos de prueba muy específicas de extremo a extremo sin tener que preocuparse por la sobrecarga de una base de datos o un servicio. Por lo tanto, utilizando el @MockBean anotación.

Mientras que, las pruebas de integración se centra en la integración de las diferentes capas de la aplicación, como la base de datos. La mayoría de las personas utilizan una base de datos en la memoria como el H2 para poner a prueba sus repositorios. Pruebas de integración no deben contener ninguna burla y ambos tipos de pruebas se deben ejecutar por separado.

De recursos: https://www.baeldung.com/spring-boot-testing

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=233303&siteId=1
Recomendado
Clasificación