Tôi đang viết các bài kiểm tra đơn vị cho lớp dịch vụ trong ứng dụng mùa xuân của tôi.
Đây là lớp dịch vụ của tôiKiểm thử đơn vị với 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;
}
}
Đây là lớp học thử nghiệm của tôi
@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);
}
}
của nó làm việc vài câu hỏi tốt nhưng tôi có
- Làm thế nào chúng ta có thể
Autowire
lớp dịch vụ trong thử nghiệm? Tôi đang sử dụng hàm tạo trong phương thứcinit()
để tạo đối tượng dịch vụ. - Chúng tôi có phải đặt tất cả thành phần
Autowire
cho lớp dịch vụ không? Ví dụ:StubRequestService
có autowiredRequestDao
mà tôi cần phải đặt rõ ràng trước khi gọi phương thức thử nghiệm nếu không nó đã được cung cấpnullPointerException
làrequestDao
lànull
trong phương thứcStubRequestService.getRequest
. - Thực tiễn tốt để làm theo trong khi kiểm tra đơn vị lớp dịch vụ mùa xuân là gì? (Nếu tôi làm gì sai).
Nếu bạn thay đổi câu hỏi của bạn sau khi các câu trả lời được đưa ra, câu trả lời không có ý nghĩa nhiều nữa. Tôi sẽ khôi phục bản chỉnh sửa cuối cùng của bạn. –
@JB: Xin lỗi vì đã chỉnh sửa câu hỏi. Tôi chỉ muốn cung cấp thông tin chính xác và chính xác. Cảm ơn – xyz