jmockit是与junit搭配使用的测试框架每一个版本的jmockit都有对应的junit版本,可以在maven仓库官网查看关系
注意版本变化中方法的弃用在1.19版本之后,弃用了许多方法,而网上的许多教程贴不写对应的版本,这就会造成测试失败,以下是对应关系
1.25删除了NonStrictExpectations
Jmockit是在1.26版本才正式开始支持junit5的初始版本的
1.33可用的@Injectable和@Tested声明对象会被注入到@Tested对象中,无论是否有fullyInitialized的声明,静态成员除外
Jmockit1.36舍弃了Deencapsulation的invoke方法,Jmockit中文网的作者建议使用这个版本的Jmockit
1.36移除了StrictExpectations类
1.40JMockit现在需要JDK 1.7+来执行测试。删除了对JDK 1.6的支持
1.41添加了对@Tested在JUnit 4/5测试方法参数中作为元注释使用的支持。
1.42JMockit现在需要使用“ -javaagent”JVM初始化参数,例如
maven-surefire-plugin
2.0.0
-javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
记得配置jmockit.version
1.44舍弃了Deencapsulation的setfield方法
1.46支持了junit5.4.0
1.47舍弃了Deencapsulation这个类,并移除了@Mocked的stubOutClassInitialization属性
如果mock代码没有执行会报错
mock之后的代码必须要执行,否则就会报错,这种错误有两种情况,一种是没有执行到相应的位置程序就停止了,第二种是mock代码设置不当,导致与被测试的代码有偏差,注意:mock报错时需要注意程序犯错和mock犯错分清