EasyMock和测试受保护的方法

时间:2012-02-03 00:58:46

标签: java easymock

尝试使用EasyMock测试受保护的方法是否被调用,不确定这是否是最好的方法...但是如下所示,我如何判断callI()实际调用了didIgetCalled()被称为?

public Class testMe(){
    public int callMe(){
        if(true){
            didIgetCalled();
        }
        return 1;
    }
    protected int didIgetCalled(){
        return 2;
    }
}

2 个答案:

答案 0 :(得分:2)

这是一种可以在不使用EasyMock的情况下测试方法的方法,但我的建议是:如果它不公开,请不要为它编写测试

Method method = testMe.class.getDeclaredMethod("didIgetCalled", new Class[]{});
method.setAccessible(true);
testMe testClass = new testMe();
int invoke = (Integer) method.invoke(testClass);
assertEquals(2,invoke);

我知道这不会完全解决您的问题,但这是一个开始:)

答案 1 :(得分:0)

这个怎么样:

您可以为测试类保留与测试类相同的包名称。这样,如果您所测试的课程MyClass.java位于src目录中且​​包名为com.abc.mypackage,那么您的测试类说MyClassTest.java可能位于test目录中相同的包名称。见下图:

enter image description here