EasyMock和测试受保护的方法

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

public Class testMe(){ public int callMe(){ if(true){ didIgetCalled(); } return 1; } protected int didIgetCalled(){ return 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); 

我知道这不会完全解决你的问题,但它是一个开始 🙂

这个怎么样:

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

在此处输入图像描述