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

     

  • 相关阅读:
    PHP原生实现,校验微信公众号||小程序服务器地址
    TP3.2校验微信公众号||小程序 服务器地址
    【微信小程序】解决 竖向<scroll-view>组件 “竖向滚动页面出现遮挡”问题
    【微信小程序】:confirm(删除提示)
    【微信小程序】:评论、回复和删除功能 -- 2017/7/14
    微信小程序:bindtap方法传参
    TP3.2之WHERE组合条件处理
    Python:导入numpy报错 No module named numpy
    Python: 二进制、八进制、十六进制转换或者输出
    Python:数字的格式化输出
  • 原文地址:https://www.cnblogs.com/hkxd-1/p/6044000.html
Copyright © 2020-2023  润新知