Mockito-Mockの使用方法

1545 ワード

一.Mockito


Mockitoは優れたmockフレームワークで、テストコードを簡潔にし、可読性が高く、エラーも非常にきれいになります.

二.@Mock


あなたのユニットテストが多くのbeanに関連している場合、それらを完全にコントロールすることはできません.簡単なビジネスロジックをテストするためにリモートサービスを呼び出す可能性があります.これは多くのオブジェクトと複雑なロジックに関連して頭が痛くなります.ビジネスロジックをテストするためにこれらの仕事をする必要はありません.@Mockはこのような問題を解決し、文字通りmockは元サービスの模倣である.Mockedオブジェクトは元のオブジェクトの動作を模倣しており,実際には空殻にすぎないが,この空殻がこの注入問題を解決している.私たちが関心を持っていないか、安全であることが証明されているオブジェクトの代わりにMockedオブジェクトを使用することができます.Mockitoは@Mock注釈を提供し、この作業を完了します.
@Mock
private MService mService;

三.@InjectMocks


ユニットテストを行うときによくこのような問題に遭遇し、サービス間の結合性が高く、1つのサービスのユニットテストに対して他のサービスを導入する必要があることが多い.あなたのテスト対象に関心のない対象がたくさんある場合はどうすればいいですか?
@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オブジェクトをテストオブジェクトに注入することができます.