Java开发03---Mockito简介

来源:互联网 发布:淘宝最红小模特小女孩 编辑:程序博客网 时间:2024/05/18 20:47
1 安装Mockito
    1.1 Mockito主页https://code.google.com/p/mockito/
    1.2 在这里下载mockito-all-1.9.5.jar,在这里https://code.google.com/p/mockito/downloads/detail?name=mockito-all-1.9.5.jar&can=2&q=
    1.3 配置/etc/environment,在这里将修改CLASSPATH,成为:CLASSPATH=.:/usr/lib/jvm/java-6-sum/lib:/usr/local/lib/junit/hamcrest-core-1.3.jar:/usr/local/lib/junit/junit-4.11.jar:/usr/local/lib/java-lib/mockito-all-1.9.5.jar

2. 测试Mockito
    2.1 例子在此http://blog.iamzsx.me/show.html?id=118001
    2.3 这个例子在p7目录,仅仅用于说明mockito,没有其他含义。
    2.4 源代码RandomUtil.java
package com.cere;​import java.util.Random;public class RandomUtil{    private final static Random DEFAULT_RANDOM = new Random();    public static int randomSelect(int[] weights){        return randomSelect(DEFAULT_RANDOM, weights);    }    public static int randomSelect(Random r, int[] weights){        if (weights == null || weights.length == 0){            throw new IllegalArgumentException("weights must not be an empty arrary");        }        int s = 0;        for(int i:weights){            s += i;        }        int target = r.nextInt(s);        System.out.printf("target = %d\n", target);        int accumulator = 0;        for(int i = 0; i < weights.length; i++){            System.out.printf("\ni = %d\n", i);            accumulator += weights[i];            System.out.printf("accumulator = %d\n", accumulator);            if (accumulator > target){                System.out.printf("return i = %d\n", i);                return i;            }        }        System.out.printf("return 0\n");        return 0;    }    public static void main(String[] args){        int[] expected = new int[] {0, 0, 1, 2, 4, 4};        randomSelect(expected);    }}

    2.5 源代码TestRandomUtil.java
package com.cere;import static org.mockito.Mockito.mock;import static org.mockito.Mockito.when;import java.util.Random;import org.junit.Assert;import org.junit.Test;public class TestRandomUtil{    @Test    public void testSelect(){        int[] weights = {2,1,3,0,4};        int s = 0;        for(int i:weights){s += i;}        int[] expected = new int[] {0, 0, 1, 2, 2, 2, 4, 4, 4, 4};        for(int i = 0; i < s; i++){            Random r = mock(Random.class);            when(r.nextInt(s)).thenReturn(i);            Assert.assertEquals(expected[i], RandomUtil.randomSelect(r, weights));        }    }}

    2.6 编译:brian@brian-laptop:~/work/ifi/devsvn/hdp-train/class-5/p7$ javac -d ./classes/ src/*.java
    2.7 执行1: 
                      cd classes; 
                      brian@brian-laptop:~/work/ifi/devsvn/hdp-train/class-5/p7/classes$ java com.cere.RandomUtil
    2.8 执行2: 
                      cd classes; 
                      brian@brian-laptop:~/work/ifi/devsvn/hdp-train/class-5/p7/classes$ java org.junit.runner.JUnitCore  com.cere.TestRandomUtil
              这个是执行测试的过程。

原创粉丝点击