2019-08-13 mock单测

restful/resource/log4j.xml中

info不打日志 debug 日志会不停地滚

mock单测的时候需要注意的点


import static org.mockito.Mockito.*;

有了这一句就可以用了

public class 方法名 上面加上注解@Runwith(SpringRunner.class)

@InjectMock把需要测试的类注进去 xxxImpl

@Mock xxxImpl中需要用到的service注入  这两个注解没有可比性 

@Test不要忘了 不过有个办法就是在xxximpl中右键 goto test 然后create 就可以生成这个实现的测试类

流程

捏数据---when---xxxService.方法()

@InjectMokito下面 注入impl idea自动输入的 会把impl去掉

使用when的时候里面传any() 然后thenreturn中加入自己编的数据保证代码能跑通

一个方法中可以多次使用xxxService

when()出现情况一a

when()出现情况二中a

xxxService.getAgents();


when()出现情况一中b

when()出现情况二中 a

xxx.Service.getAgents

税牌项目中getAllAgents的例子

List list = new ArrayList();

when(。。。)thenreturn(list);

xService.getAgents(...) 这时候就是list为空的情况  一般会判断list是否为空然后 进入一个if,进入完这个if后return了怎么办 这时就需要走list不为空的时候的情况

在上边的代码下边 接着写

list.add(xx1);

list.add(xx2);

when(...).thenreturn (list);

xService.getAgents();这两 两种情况就会被都覆盖了;

对于静态

@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)

@PowerMockIgnore({"javax.management.*"})

@PrepareForTest({Td's'fa.class, sdfUtil.class})

@SuppressStaticInitializationFor("com.msdfou.data.tracking.util.rest.sdfUtil")

要记入这些 注释 不明白 然后 

还有@Before

public void common(){

mockStatic(sdfUtil.class);

try {

PowerMockito.when(sdfUtil.getId()).thenReturn(1L);

}catch (IOException e) {

e.printStackTrace();

}

}

你可能感兴趣的:(2019-08-13 mock单测)