一、@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;//調用次數 } }; } }