es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Diferentes anotaciones para pruebas unitarias en una aplicación Spring.

Estoy escribiendo algunas pruebas unitarias y estoy confundido debido a las diferentes anotaciones en las pruebas unitarias:

Una de ellas es así:

@ExtendWith(SpringExtension.class)
class EmployeeServiceImplTest {

@MockBean
private EmployeeRepository employeeRepository;

@Autowired
private EmployeeServiceImpl employeeService;

@Test
void testFindAll() {
  //...
}

//...
}

Y otra utiliza las siguientes anotaciones:

@RunWith(MockitoJUnitRunner.class) 
public class EmployeeServiceImplTest {

@Mock
private EmployeeRepository employeeRepository;

@InjectMocks
private EmployeeServiceImpl employeeService;

@Test
void testFindAll() {
  //...
}

//...
}

Entonces, uso Java y Spring Boot para el lenguaje y el framework. ¿Qué anotaciones debo usar?

¿@ExtendWith(SpringExtension.class) o @RunWith(MockitoJUnitRunner.class)?

¿@MockBean o @Mock?

¿@Autowired o @InjectMocks?

¿Alguna idea con respecto a estas anotaciones?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Si estás utilizando Java y Spring Boot, se recomienda utilizar la anotación @ExtendWith(SpringExtension.class) para las pruebas unitarias. Esta anotación ayuda a cargar el contexto de Spring e inyectar dependencias durante las pruebas.

    Para simular dependencias, Spring Boot proporciona la anotación @MockBean, la cual crea una instancia simulada del bean e la inyecta en el contexto de Spring durante las pruebas.

    Si deseas utilizar Mockito para simulación de objetos, debes usar @RunWith(MockitoJUnitRunner.class) y @Mock para crear objetos simulados. @RunWith(MockitoJUnitRunner.class) inicializa el framework de Mockito y ejecuta las pruebas, y @Mock crea una instancia simulada de la clase para la cual se declara.

    Para inyectar los objetos simulados en la instancia objetivo de prueba, Mockito proporciona la anotación @InjectMocks. Esta anotación inyecta los objetos simulados que se crearon utilizando la anotación @Mock en la instancia de la clase objetivo de prueba.

    Por lo tanto, se recomienda utilizar las anotaciones @ExtendWith(SpringExtension.class), @MockBean y @Autowired para las pruebas unitarias en Spring Boot. Sin embargo, si prefieres utilizar Mockito para la simulación, puedes utilizar en su lugar las anotaciones @RunWith(MockitoJUnitRunner.class), @Mock y @InjectMocks.

Comments are closed.