Mockito-Mock的一种使用方法

一.Mockito

Mockito是一个优异的mock框架,它可以让你的测试代码简洁、可读性很高,而且错误也变得非常的干净。

二.@Mock

当你的单元测试涉及到很多的bean时,你往往不能完全地掌控它们,你可能会因为要测试一个简单的业务逻辑而去调用一个远程服务,这涉及到很多的对象和复杂的逻辑会让你头痛,而且你只是为了测试一个业务逻辑完全没有必要做这些工作。@Mock解决了这种问题,从字面意思上讲,mock就是原service的一种模仿。Mocked对象模仿原对象的行为,实际上它只是个空壳子,但就是这个空壳子让这种注入问题迎刃而解。我们可以使用Mocked对象来替代那些我们不关心或者已经被证明过安全的对象。Mockito提供了@Mock注解来完成这一工作,如

@Mock
private MService mService;

三.@InjectMocks

在进行单元测试的时候经常会碰到这种问题,service之间的耦合性很高,对于一个service的单元测试常常会需要引入其他的service。当你的测试对象中有很多你并不关心的对象的时候又该怎么办呢?

@Componet
public class TestService{
@Autowired
private MService mService;

@Autowired
private AService aService;

@Autowired
private BService bService;
//......
}

显然,你并不想把它们全部注入。你可以使用@Mock来模仿这些你并不关心的对象,但是要如何才能将将这些Mocked对象注入到你的测试对象中呢?

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(locations = {"classpath:application-content.xml"})
public class AWServiceTest {
    @Mock
    private MService masterProxyService;

    @Mock
    private AService aService;

    @Mock
    private BService bService;

    @Autowired
    private AnotherService anotherService;

    @InjectMocks
    private TestService testService;

    @Test
    public void test(){

    }
}

@InjectMocks能够将Mocked对象注入到修饰对象中,通过这种方式可以将Mocked对象注入到你的测试对象中。

你可能感兴趣的:(Mockito-Mock的一种使用方法)