Java Mockito:如何用mocking测试我的服务?

Java Mockito:如何用mocking测试我的服务?,java,testing,junit,mocking,mockito,Java,Testing,Junit,Mocking,Mockito,我不熟悉模拟测试 我想测试我的服务方法CorrectionService.correctionPerson(长人名)。 该实现尚未编写,但它将执行以下操作: CorrectionService将调用AddressDAO方法,该方法将删除人员拥有的一些地址。一个人有许多地址 我不确定我的CorrectionServiceTest.testCorrectPerson的基本结构必须是什么 另外,请不要确认,在这个测试中,我不需要测试地址是否被实际删除(应该在AddressDaoTest中完成),只需要

我不熟悉模拟测试

我想测试我的服务方法
CorrectionService.correctionPerson(长人名)
。 该实现尚未编写,但它将执行以下操作:

CorrectionService
将调用
AddressDAO
方法,该方法将删除
人员拥有的一些
地址。一个人有许多地址

我不确定我的
CorrectionServiceTest.testCorrectPerson的基本结构必须是什么

另外,请不要确认,在这个测试中,我不需要测试地址是否被实际删除(应该在
AddressDaoTest
中完成),只需要调用DAO方法


感谢您提供了CorrectionService类的简化版本(为了简单起见,删除了可见性修饰符)

在您的测试中:

import static org.mockito.Mockito.*;

public class CorrectionServiceTest {

    @Before
    public void setUp() {
        addressDao = mock(AddressDao.class);
        correctionService = new CorrectionService(addressDao);
    }


    @Test
    public void shouldCallDeleteAddress() {
        correctionService.correct(VALID_ID);
        verify(addressDao).deleteAddress(VALID_ID);
    }
}  
清洁版:

@RunWith(MockitoJUnitRunner.class)
public class CorrectionServiceTest {

    private static final Long VALID_ID = 123L;

    @Mock
    AddressDao addressDao;

    @InjectMocks
    private CorrectionService correctionService;

    @Test
    public void shouldCallDeleteAddress() { 
        //when
        correctionService.correct(VALID_ID);
        //then
        verify(addressDao).deleteAddress(VALID_ID);
    }
}
@RunWith(MockitoJUnitRunner.class)
public class CorrectionServiceTest {

    private static final Long VALID_ID = 123L;

    @Mock
    AddressDao addressDao;

    @InjectMocks
    private CorrectionService correctionService;

    @Test
    public void shouldCallDeleteAddress() { 
        //when
        correctionService.correct(VALID_ID);
        //then
        verify(addressDao).deleteAddress(VALID_ID);
    }
}