1自动装配
在后面的用jmockit声明的对象会自动检查前面的jmockit注解对象是否可以注入本类的内部对象,如果适配成功就注入
2mock接口与实例
mock之后的对象是会被覆盖的,
对于构造方法赋值给接口的情况,请直接mock实例,否则会出现实例不对应而出现 missing 报错的情况
@Test void doIt(@Mocked XXXXX xxxxx) { new Expectations() {{ new XXXXX((SSSS) any); result=xxxxx; }}; }
对于mock方法中的不定参数,包括构造函数,尽量用any ,原因是构造参数的个体逻辑差异会出现执行时 missing的情况
3注解的选择
@Tested 的对象内部逻辑是要执行的,@Mocked的内部逻辑会被忽略 要注意被@Mocked是无法记入覆盖率的,因为内部没有逻辑
4Mock执行
如果已经Mock了对象,但是方法的参数是实例时参数校验还是会被执行的,如果是用Tested修饰对象执行方法内部出错会使程序报错进而使mock失效
4关于 new Expectations() mock 静态类
like this new Expectations(LocalTime.class) 这个形式接口(interface)玩不了,因为没有实体类也就没有构造方法
5 Expectations 的使用
这个方法不能mock私有方法,但是如果一个项目所有方法都是私有的也是不可能的,尽量mock暴露在外的公共方法