Junit 3.8.1 源码分析(一)

写在前面:本文基于Junit3.8.1版本,因为这是我第一次进行源码学习,先从简单的源码开始学起

1. 示例代码

1.1 准备工作

  • 下载Junit3.8.1的JAR包
  • 需要下载junit-3.8.1-sources.jarjunit-3.8.1.jar,前者是源码包,后者是项目中需要使用的Jar包;

1.2 项目中导入Junit相关jar包

  • 使用Eclipse,新建项目test;
  • test右键,选中 properties

1.3 编写示例代码

// SampleCalculator.java,需要测试的类
public class SampleCalculator{
    // 加法
    private int add(int a, int b){
        return a + b;
    }

    // 乘法
    public int multiply(int a, int b){
        return a * b;
    }

    //除法
    public double divide(int a, int b){
        return a/b;
    }   
}

// 编写测试类,该类需要继承 TestCase
public class TestSample extends TestCase{

    private SampleCalculator cal = null;

    protected void setUp() throws Exception{
        super.setUp();
        // 每个测试方法执行前,重新new一个对象,避免测试用例之间的依赖
        cal = new SampleCalculator():
        System.out.println("在每个测试方法执行前执行 ---setUp...");
    }

    // 测试源代码的私有方法
    public void testAdd(){
        System.out.println("测试方法testAdd...");
        try{
            // 使用反射,进行私有方法的调用
            Class<SampleCalculator> clazz = SampleCalculator.class;
            Method method = clazz.getDeclaredMethod("add", new Class[] { Integer.TYPE, Integer.TYPE});
            method.setAccessible(true);
            Object obj = method.invoke(cal, new Object[]{1, 2});
            Assert.assertEquals(3, obj);
        }catch(Exception e){
            Assert.fail();
        }
    }

    // 测试乘法
    public void testMultiply(){
        System.out.println("测试方法testMultiply...");
        Assert.assertEquals.(3, cal.multiply(1, 2));
    }

    // 测试除法
    public void testDivice(){
        System.out.println("测试方法testDivide...");
        Assert.assertEquals(2, cal.divide(1, 0));
    }

    @Override
    protected void tearDown() throws Exception{
        super.tearDown();
        cal = null; // 在每个测试方法执行后,主动销毁对象
        System.out.println("在每个测试方法执行后执行--tearDown...\n");
    }

    // main方法调用
    public static void main(String[] args){
        junit.textui.TestRunner.run(TestSample.class);
    }
}

备注

  • Failures:表示测试的期待结果与程序运行结果不相符;
  • Errors: 表示测试程序执行过程中,抛出了异常;


参考资料:

猜你喜欢

转载自www.cnblogs.com/linkworld/p/9032575.html