zoukankan      html  css  js  c++  java
  • EasyMock的使用

    1.Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。同时也可以当调用别人的模块,而该模块又没有实现时(只提供接口),我们可以在独立的环境中测试自己的模块逻辑。

    2.使用前的准备,下载所需的jar包:easymock-3.0.jar(或以上版本),junit-4.4.jar,cglib-nodep-2.1_3.jar

    3.使用方法较简单。主要有以下步骤:

     *•使用 EasyMock 生成 Mock 对象;
     *•设定 Mock 对象的预期行为和输出;
     *•将 Mock 对象切换到 Replay 状态;
     *•调用 Mock 对象方法进行单元测试;
     *•对 Mock 对象的行为进行验证。

    测试实例:假如我有一个IStudent接口类和StudentApplication类,StudentApplication类中用到了IStudent中的没实现的方法,而我想测试StudentApplication,这时用EasyMock构造一个IStudent的Mock对象,并给要用到的的未实现的方法设定已知返回值。

    code:

    复制代码
    1 public interface IStudent {
    2 public String doMethod1();
    3 public String doMethod2();
    4 public String doMethod3();
    5
    6 }
    复制代码
    复制代码
     1 public class StudentApplication {
    2 IStudent student=null;
    3 public StudentApplication(){
    4
    5 }
    6
    7 public String doMethod(){
    8 String str1=student.doMethod1();
    9 String str2=student.doMethod2();
    10 String str3=student.doMethod3();
    11 return str1+str2+str3;
    12 }
    13
    14 public IStudent getStudent() {
    15 return student;
    16 }
    17
    18 public void setStudent(IStudent student) {
    19 this.student = student;
    20 }
    21
    22
    23
    24 }
    复制代码
    复制代码
     1 import main.IStudent;
    2 import main.StudentApplication;
    3
    4 import org.easymock.EasyMock;
    5 import org.junit.Assert;
    6 import org.junit.Test;
    7
    8
    9 public class testStudentApplication {
    10 IStudent student;
    11 StudentApplication application;
    12 @Test
    13 public void testdoMethod(){
    14 //•使用 EasyMock 生成 Mock 对象;
    15 student=EasyMock.createMock(IStudent.class);
    16 //设定 Mock 对象的预期行为和输出
    17 EasyMock.expect(student.doMethod1()).andReturn("a").times(1);
    18 EasyMock.expect(student.doMethod2()).andReturn("b").times(1);
    19 EasyMock.expect(student.doMethod3()).andReturn("c").times(1);
    20 //将 Mock 对象切换到 Replay 状态
    21 EasyMock.replay(student);
    22 //调用 Mock 对象方法进行单元测试
    23 application=new StudentApplication();
    24 application.setStudent(student);
    25 String getStr=application.doMethod();
    26 //对 Mock 对象的行为进行验证
    27 String cstr="abc";//正确的字符串
    28 Assert.assertEquals(getStr, cstr);
    29 EasyMock.verify(student);
    30
    31 }
    32
    33 }
    复制代码

     

  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4346903.html
Copyright © 2011-2022 走看看