Jmock 基本用法

2021-06-24 11:14:53 字數 2520 閱讀 6092

code:

package com.citi;

public class publisher

public void publish(string message,int i)

}

package com.citi;

public inte***ce subscriber

package com.citi.test;

import org.jmock.expectations;

import org.jmock.mockery;

import org.junit.test;

import com.citi.publisher;

import com.citi.subscriber;

public class publishertest});

// execute

publisher.publish(message,1);

// verify

context.assertissatisfied();

}@test

public void testonesubscriberreceivesamessage02() });

publisher.publish(message,1);

context.assertissatisfied();

} @test

public void testonesubscriberreceivesamessage03() });

publisher.publish(message,1);

context.assertissatisfied();

}}

每種expectation都有下面類似結構:

invocation-count (mock-object).method(argument-constraints);

insequence(sequence-name);

when(state-machine.is(state-name));

will(action);

then(state-machine.is(new-state-name));

對於連續的呼叫返回不同的值,可以這麼寫:

原來:

oneof (anobject).dosomething(); will(returnvalue(10));

oneof (anobject).dosomething(); will(returnvalue(20));

oneof (anobject).dosomething(); will(returnvalue(30));

現在:
atleast(1).of (anobject).dosomething();

will(onconsecutivecalls(

returnvalue(10),

returnvalue(20),

returnvalue(30)));

上述示例也顯示了方法丟擲異常的情況.

下述例子演示了對方法引數的約束:

package com.citi;

public inte***ce manager04

package com.citi;

public class manager44

public string do44(string str1,string str2)

}

package com.citi.test;

import junit.framework.assert;

import org.jmock.expectations;

import org.jmock.mockery;

import org.junit.test;

import com.citi.manager04;

import com.citi.manager44;

public class manager44test});

string s = manager44.do44("a","bb");

context.assertissatisfied();

assert.assertequals("tom is a dog", s);

}}

with(anull(string.class)), with(anonnull(string.class))
約束了呼叫do04方法時的第乙個引數可以為null,第二個引數不可以為空.

with(same("a")), with(anonnull(string.class))
same約束了第乙個引數必須是"a",才能正常呼叫do04方法.

jmock2的使用 入門

jmock可以方便的對介面和類做mock 在這裡採用的是junit 4.4 和jmock 2.2 runwith jmock.class public class footest test public void testfoo throws exception 可以定義多個block assert...

菜鳥學習Jmock測試 入門(二)

第乙個例項 建立乙個testcase的步驟 1 建立乙個test上下文物件 2 生成乙個mock物件 3 設定期望 4 設定mock物件 5 呼叫方法 6 驗證返回值 例項 使用者服務測試 測試使用者服務中根據userid查詢使用者表中某個業務 本例子中採用的是鮮花 的未讀數。public clas...

python基本用法 Python基本用法總結

python 的設計具有很強的可讀性,易於使用。這裡對python基本用法做乙個總結介紹。一 變數型別 1 變數賦值 python中的變數賦值不需要型別宣告,每個變數在使用前都必須賦值,變數賦值之後才會被建立。使用等號進行變數的賦值。2 多個變數賦值 為多個變數賦值時或進行列表內資料的交換時,可以使...