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?
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
.