Easymock學習spring
Author:luojieapp
EasyMock 是一套經過簡單的方法對於指定的接口或類生成 Mock 對象的類庫,它能利用對接口或類的模擬來輔助單元測試。函數
用於白盒測試,與預期結果不一樣,纔去分析代碼。單元測試
EasyMock採用「記錄-----回放」的工做模式,基本使用步驟:
* 建立Mock對象的控制對象Control。
* 從控制對象中獲取所須要的Mock對象。
* 記錄測試方法中所使用到的方法和返回值。
* 設置Control對象到「回放」模式。
* 進行測試。
* 在測試完畢後,確認Mock對象已經執行了剛纔定義的全部操做。學習
public class TalkerController {測試
public Integer getResponseByWord(String word){網站
/*if(word=="我很生氣!"){ui
return EmotionConstants.very_angry_emotion;spa
}.net
else if(word == "我有點生氣"){
return EmotionConstants.normal_angry_emotion;
}
else if(word == "我心態平靜"){
return EmotionConstants.normal_emotion;
}
else if(word == "我有點開心"){
return EmotionConstants.normal_happy_emotion;
}
else if(word == "我很開心"){
return EmotionConstants.very_happy_emotion;
}else{
return 0;
}*/
return 0;
}
easymock測試類初始化代碼:
@Before
public void init(){
calMotion = new CalculateMotion();
talkerMock = EasyMock.createMock(TalkerController.class);
calMotion.setController(talkerMock);}
easymock測試類實現函數getResponseByWord代碼:
@Test
public void calTest() throws Exception{
EasyMock.expect(talkerMock.getResponseByWord("我很生氣!
")).andReturn(5);
EasyMock.expect(talkerMock.getResponseByWord("我很開心
")).andReturn(1);
EasyMock.replay(talkerMock);
Human a = new Human("我很生氣!", 1);
Human b = new Human("我很開心", 1);
calMotion.getHumanList().add(a);
calMotion.getHumanList().add(b);
int total = calMotion.calculateAvgMotion();
System.out.println("total motion:"+total);
Assert.assertEquals(6, total);
}
easymock測試類關鍵代碼如圖所示:
Junit4的測試套件:
@RunWith(Suite.class)
// 指定運行器
@Suite.SuiteClasses({ CalculatorTest.class, ParametersTest.class })
// 指定要測試的類
public class TestAll
{
}
@RunWith(Suite.class)
@SuiteClasses(TestAll.class)
// 除了指定類,也能夠指定套件類
public class TestAll2
{
}
JUnit4使用Java5中的註解(annotation),如下是JUnit4經常使用的幾個annotation:
* @Before:初始化方法 對於每個測試方法都要執行一次(注意與BeforeClass區別,後者是對於所 有方法執行一次)
* @After:釋放資源 對於每個測試方法都要執行一次(注意與AfterClass區別,後者是對於所
有方法執行一次)
* @Test:測試方法,在這裏能夠測試指望異常和超時時間
* @Test(expected=ArithmeticException.class)檢查被測方法是否拋出ArithmeticException異常
* @Ignore:忽略的測試方法
* @BeforeClass:針對全部測試,只執行一次,且必須爲static void
* @AfterClass:針對全部測試,只執行一次,且必須爲static void
* 一個JUnit4的單元測試用例執行順序爲:
* @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
* 每個測試方法的調用順序爲:
* @Before -> @Test -> @After;
http://jackyrong.iteye.com/blog/1934670(easymock快速入門教程)
http://blog.csdn.net/vking_wang/article/details/9170979(easymock基本語法)
http://blog.csdn.net/u010218617/article/details/10468441(easymock+spring)
http://blog.csdn.net/zhangxin09/article/details/42487319(junit+mockito)