easymock+junit+spring學習·

                             Easymock學習spring

                               Author:luojieapp

  1. 1.       Easymock簡介

EasyMock 是一套經過簡單的方法對於指定的接口或類生成 Mock 對象的類庫,它能利用對接口或類的模擬來輔助單元測試。函數

用於白盒測試,與預期結果不一樣,纔去分析代碼。單元測試

 

  1. 2.       Easymock + junit 單元測試

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);

         }

 

  1. 3.       easymock + spring + junit4

 easymock測試類關鍵代碼如圖所示:

 

Junit4的測試套件:

   @RunWith(Suite.class)

   // 指定運行器

   @Suite.SuiteClasses({ CalculatorTest.class, ParametersTest.class })

   // 指定要測試的類

   public class TestAll

   {

  

   }

 

   @RunWith(Suite.class)
   @SuiteClasses(TestAll.class)
   // 除了指定類,也能夠指定套件類
   public class TestAll2
   {
   
   }

 

 

  1. 4.       Junit主要語法

      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;

 

  1. 5.       參考網站:

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)

相關文章
相關標籤/搜索