一、@Mocked,标识一个指定的class的实例或被测对象的参数被Mock掉。函数
二、@Capturing,标识一个被Mock的对象,从该对象派生的子类也被Mock了。测试
三、@Injectable,标识只有一个指定的被测对象的内部变量被mock,其余和被mock实例采用相同对象的实例不受影响。至关于对于被Injectable的class,其构造方法等各类方法仍然采用原有代码来实例化,并未彻底委托给JMockit来作。对象
四、@Tested,标识一个被测对象的实例。经过@Tested标签标识的被测对象实例,将会在测试方法执行以前被初始化。能够经过@Inject注解对被测对象的构造函数进行改写。若是没有@Inject,则采用原有代码进行初始化。若是同时@Tested的fullyInitialized参数被设置成了true,则被测对象的全部参数都须要被初始化成一个合适的值。it
基础例子:io
public class MyObject { public String hello(String name){ return "Hello " + name; } }
@RunWith(JMockit.class) public class JmockitClass { @Mocked //会将全部的方法 MyObject obj; @Test public void testHello(){ new Expectations() {//设置预期行为 { obj.hello("Zhangsan");result="hello zhangsan"; } }; assertEquals("hello zhangsan", obj.hello("Zhangsan"));//调用测试方法 new Verifications() {//验证预期Mock行为被调用 { obj.hello("Zhangsan"); times = 1;//调用次数 } }; } }