zoukankan      html  css  js  c++  java
  • 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)

     

  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/hkxd-1/p/6044000.html
Copyright © 2011-2022 走看看