Junit4 单元测试 private 私有方法 abstract类

尊重他人的劳动成果, 转载请注明文章出处http://blog.csdn.net/caib1109/article/details/51338743
本文的知识产权受到中国法律保护


一句话说明单元测试的意义: 显著提高从上到下结构项目的可维护性和健壮性, 保证多个类之间的依赖关系正确.

Talk is cheap, show me the code.

Let’s go!

private方法的单元测试

//被测试类
public class A {
    protected String doSomething(){
        return "a";
    }
}
    @Test
    public void testPrivate() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
        Class [] parameterTypes = {String.class}; // 声明调用的方法只有一个参数, 类型为String
        Object[] arguments      = {"sasdfCons"}; // 声明具体调用时传的参数
        Method method = new A.getClass().getDeclaredMethod(
                "doSomething", parameterTypes); // 声明调用哪个类的哪个方法
        method.setAccessible(true);// 允许处理私有方法
        String resStr = (String) method.invoke(nafmiiContentSpider, arguments);// 具体调用
        method.setAccessible(false);
        assertThat(resStr, equalTo("a")); // junit4使用hamcrest包提供的断言
    }

abstract类的单元测试

//被测试类
public abstract class A {
    protected String doSomething(){
        return "a";
    }
}
import org.junit.Test;

import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.*;

public class ATest {
    static class InnerA extends A {
        public String innerMethod() {
            return super.doSomething();
        }
    }

    @Test
    public void testGetSpiderName(){
        String aString = new ATest.InnerA().innerMethod(); // static内部类不用实例化外部类
        assertThat(aString, equalTo("a")); // junit4推荐使用hamrest包提供的断言
    }
}

尊重他人的劳动成果, 转载请注明文章出处http://blog.csdn.net/caib1109/article/details/51338743
本文的知识产权受到中国法律保护

展开阅读全文

没有更多推荐了,返回首页