Java 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

我的方法的JUnit测试有问题

@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
}