jmockit demo

一、@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;//調用次數
            }
        };
    }
}
相關文章
相關標籤/搜索