Mockito单元测试 初试

Mockito单元测试相对于Spring Boot 自带的好处理在于,单元测试不需要加载注入Spring Boot 启动项目。

1、需要注入的东西如下,@InjectMocks是注入需要测试的类,@Spy(也可以用@Mock,但我个人更加推荐 @Spy)是测试类里注入的bean

@EnableMockito
public class MockitoTest extends MockitoUtil {
  @Before
  public void init() {
     MockitoAnnotations.initMocks(this.getClass().getTypeName());
  }
  @InjectMocks
  private LhbWayBillServiceImpl lhbWayBillService;
  @Spy
  private LhbWayBillMapper lhbWayBillMapper;
}
View Code

2、@EnableMockito 及 MockitoUtil 中代码
@RunWith(Silent.class)
@ContextConfiguration(
    classes = {MockServletContext.class}
)

@WebAppConfiguration
public @interface EnableMockito {
}

@Component
public abstract class MockitoUtil {
    @Before
    public void init() {
        MockitoAnnotations.initMocks(this.getClass().getTypeName());
    }
}
View Code
这两个类的目的只是为了简化单元测试,开发人员少写重复代码。

   单元测试

    @Test
    public void shouldDoSomething() {
        List result = new ArrayList();
        LhbWaybillEntity entity = new LhbWaybillEntity();
        entity.setConsignorAddress("123132132");
        result.add(entity);
        Mockito.when(lhbWayBillMapper.selectLhbWaybillList(Mockito.anyList(), Mockito.anyString())).thenReturn(result);

        List orderNo = lhbWayBillService.selectLhbWaybillList(Mockito.anyList(), Mockito.anyString());
        Assert.assertEquals(orderNo, result);

        System.out.println(orderNo);
    }
View Code

初化数据也可以放在 @Berfore 方法里面
List result = new ArrayList();
LhbWaybillEntity entity = new LhbWaybillEntity();

@Override
public void init() {
    super.init();
    entity.setConsignorAddress("123132132");
    result.add(entity);
}
View Code

 

使用的是spring boot 项目 pom 文件引

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.8.47</version>
<scope>compile</scope>
</dependency>
posted @ 2019-04-24 14:22  维基框架  阅读(140)  评论(0编辑  收藏  举报