zoukankan      html  css  js  c++  java
  • Mock测试

    测试介绍

    编辑

    对象

    这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。

    对象使用范畴

    真实对象具有不可确定的行为,产生不可预测的效果,(如:股票行情,天气预报)真实对象很难被创建的 真实对象的某些行为很难被触发真实对象实际上还不存在的(和其他开发小组或者和新的硬件打交道)等等。

    关键步骤

    使用一个接口来描述这个对象。在产品代码中实现这个接口,在测试代码中实现这个接口,在被测试代码中只是通过接口来引用对象,所以它不知道这个引用的对象是真实对象,还是mock对象。

    测试工具

    使用Mock Object进行测试,主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JDBC中的ResultSet对象)从而使测试顺利进行的工具。
    目前,在Java阵营中主要的Mock测试工具有JMock,MockCreator,Mockrunner,EasyMock,MockMaker等,在微软的.Net阵营中主要是Nmock,.NetMock等。

    对象实例

    编辑
    一个闹钟根据时间来进行提醒服务,如果过了下午5点钟就播放音频文件提醒大家下班了,如果我们要利用真实的对象来测试的话就只能苦苦等到下午五点,然后把耳朵放在音箱旁,我们应该利用mock对象来进行测试,这样我们就可以模拟控制时间了,而不用苦苦等待时钟转到下午5点钟了。下面是代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public abstract class Environmental{
        boolean playedWav=false;
        public abstract  long getTime();
        public abstract  void  playWavFile(String fileName);
        public abstract  boolean  wavWasPlayed();
        public abstract  void  resetWav();
    }
     
    真实的实现代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class SystemEnvironment extends Environmental{
        public long getTime(){
            return System.currentTimeMillis();
        }
        public void playWavFile(String  fileName){
            playedWav=true;
        }
        public boolean  wavWasPlayed(){
            return playedWav;
        }
        public void  resetWav(){
            playedWav=false;
        }
    }
     
    下面是mock对象:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class MockSystemEnvironment extends Environmental{
        private long currentTime;
        public long getTime(){
            return currentTime;
        }
        public void setTime(long  currentTime){
            this.currentTime=currentTime;
        }
        public void playWavFile(String  fileName){
            playedWav=true;
        }
        public boolean wavWasPlayed(){
            return playedWav;
        }
        public void  resetWav(){
            playedWav=false;
        }
    }
     
  • 相关阅读:
    [转]托管DirectX,从MDX到SlimDX的转换
    [连载]Tutorial series: learning how to write a 3D soft engine from scratch in C#, TypeScript or JavaScript[英]
    关于VS2010 C#使用DirectX的问题[英]
    C#调试含有源代码的动态链接库遇见there is no source code available for the current location提示时的解决方案
    C#常用控件缩写
    朴素贝叶斯
    scikit-learn 入门
    机器学习(6): 层次聚类 hierarchical clustering
    机器学习(5): K-means 算法
    机器学习(4): KNN 算法
  • 原文地址:https://www.cnblogs.com/zhifeiji822/p/12954962.html
Copyright © 2011-2022 走看看