在对较为简单的 service 层进行单元测试时,会依赖很多其余业务产生的数据,从而造成测试方法或用例的不可反复执行。因而应用挡板来模仿 dao 层返回的数据将节俭很多工夫。
测试类的创立
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyServiceTest {
@Autowired
MyService myService;
@MockBean
private MyMapper myMapper;
}
创立测试类的办法与个别步骤雷同,因为须要引入挡板,因而不同之处在于须要模仿一个该 service 依赖的 dao 实例。@MockBean
标注的类的模仿实例将会代替从 spring 容器中获取的实在实例。
测试方法的编写
TOilTank oilTank = new TOilTank();
oilTank.setId(1L);
oilTank.setStatus(0);
Mockito.when(oilTankMapper.selectByPrimaryKey(Mockito.anyLong())).thenReturn(oilTank);
Assert.assertEquals(oilTank, oilTankService.getOilTankById(1L));
应用 Mockito
的when()
和 thenReturn()
来指定模仿 dao 实例在执行指定办法时的返回,这里返回的是创立的假数据。参数能够 Mockito
的any
指定类型,从而传入任意该类型的参数都会返回后果。