Java JUnit测试-在类实例上调用的方法
我的方法的JUnit测试有问题Java JUnit测试-在类实例上调用的方法,java,junit,mockito,Java,Junit,Mockito,我的方法的JUnit测试有问题 @Transactional @Override public void deleteOffer(Offer offer) { List<String> offerPictures = this.getOfferPictures(offer); if (offerPictures != null) { System.out.println(offerPictures.size()); for (Strin
@Transactional
@Override
public void deleteOffer(Offer offer) {
List<String> offerPictures = this.getOfferPictures(offer);
if (offerPictures != null) {
System.out.println(offerPictures.size());
for (String stringName : offerPictures) {
this.deleteSinglePhoto(new File(hardDiscAddress + stringName));
this.deleteSinglePhoto(new File(hardDiscAddress + "sm_" + stringName));
}
}
offerDAO.delete(offer.getId());
}
这是对空列表的测试
@Test
public void testDeleteOffer() {
// given
testOfferServiceImpl = new OfferServiceImpl();
testOfferServiceImpl.hardDiscAddress = "C:/";
testOfferServiceImpl.offerDAO = offerDAOMock;
when(offerMock.getId()).thenReturn(1);
when(offerMock.getPhotography()).thenReturn("stringForTest");
doNothing().when(offerDAOMock).delete(1);
// when
testOfferServiceImpl.deleteOffer(offerMock);
// then
Mockito.verify(offerDAOMock, times(1)).delete(1);
}
使用类似Mockito的东西。你可以做:
Candidate candidate = mock(Candidate.class);
when(candidate.getFirstName()).thenReturn("Bob");
这是一个来自project的示例,效果很好。您还必须使用以下内容对测试类进行注释:
@RunWith(MockitoJUnitRunner.class)
然后,您可以使该方法返回您喜欢的任何内容。希望有帮助:)您可以使用
Mockito.spy
部分模拟您正在测试的实例,并返回一个非空列表:
@Test
public void testNotEmptyOffer() {
// Given
testOfferServiceImpl = new OfferServiceImpl();
testOfferServiceImpl.hardDiscAddress = "C:/";
testOfferServiceImpl.offerDAO = offerDAOMock;
// Spy (partially mock) the object
testOfferServiceImpl = Mockito.spy(testOfferServiceImpl);
doReturn(Arrays.asList("one", "two", "three")).
when(testOfferServiceImpl).getOfferPictures(offerMock)
// Test your logic here
}
部分模拟您正在测试的类,然后期望调用
getOfferPictures(Offer)
返回您要查找的列表。是的,这解决了我的问题,谢谢!谢谢这解决了我的问题。我需要的是部分模拟:)
@Test
public void testNotEmptyOffer() {
// Given
testOfferServiceImpl = new OfferServiceImpl();
testOfferServiceImpl.hardDiscAddress = "C:/";
testOfferServiceImpl.offerDAO = offerDAOMock;
// Spy (partially mock) the object
testOfferServiceImpl = Mockito.spy(testOfferServiceImpl);
doReturn(Arrays.asList("one", "two", "three")).
when(testOfferServiceImpl).getOfferPictures(offerMock)
// Test your logic here
}