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 多個變數賦值 為多個變數賦值時或進行列表內資料的交換時,可以使...