Estoy escribiendo pruebas de unidad para la capa de servicio en mi aplicación de primavera.
Aquí es mi clase de servicioPruebas unitarias con Mockito
@Service
public class StubRequestService implements RequestService {
@Autowired
private RequestDao requestDao;
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
@Override
public Request getRequest(Long RequestId) {
Request dataRequest = requestDao.find(requestId);
return dataRequest;
}
}
Aquí es mi clase de prueba
@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(locations = { "/META-INF/spring/applicationContext.xml" })
public class StubRequestServiceTest {
@Mock
public RequestDao requestDao;
StubRequestService stubRequestService; // How can we Autowire this ?
@org.junit.Before
public void init() {
stubRequestService = new StubRequestService(); // to avoid this
stubRequestService.setRequestDao(dataRequestDao);
// Is it necessary to explicitly set all autowired elements ?
// If I comment/remove above setter then I get nullPointerException
}
@Test
public void testGetRequest() {
Request request = new Request();
request.setPatientCnt("3");
when(requestDao.find(anyLong())).thenReturn(request);
assertEquals(stubRequestService.getRequest(1234L).getPatientCnt(),3);
}
}
Sus trabajan bien, pero tengo algunas preguntas
- ¿Cómo podemos
Autowire
clase de servicio en la prueba? Estoy usando constructor en el métodoinit()
para crear un objeto de servicio. - ¿Tenemos que configurar todos los elementos
Autowire
para la clase de servicio? Por ejemplo,StubRequestService
tengo auto-conectadoRequestDao
que necesito configurar explícitamente antes de llamar al método de prueba, de lo contrario danullPointerException
comorequestDao
es en el métodoStubRequestService.getRequest
. - ¿Cuáles son las buenas prácticas a seguir mientras prueba la unidad Capa de servicio de primavera? (Si estoy haciendo algo mal).
Si cambia su pregunta después se dan las respuestas, las respuestas no hacen mucho sentido. Retiraré tu última edición. –
@JB: Disculpas por la edición de preguntas. Solo quería proporcionar información correcta y exacta. Gracias – xyz