首页 > 代码库 > easymock+junit+spring学习·

easymock+junit+spring学习·

                             Easymock学习

                               Author:luojie

  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=="我很生气!"){

               return EmotionConstants.very_angry_emotion;

             }

               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)

 

easymock+junit+spring学习·