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; }
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()); } }
这两个类的目的只是为了简化单元测试,开发人员少写重复代码。
单元测试
@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); }
初化数据也可以放在 @Berfore 方法里面
List result = new ArrayList(); LhbWaybillEntity entity = new LhbWaybillEntity(); @Override public void init() { super.init(); entity.setConsignorAddress("123132132"); result.add(entity); }
使用的是spring boot 项目 pom 文件引
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.8.47</version>
<scope>compile</scope>
</dependency>