我正在尝试在下面的类中为params方法编写一个测试用例。
编写JUnit测试用例时出现问题:
问题是该方法是私有的,并且在它调用超类方法的方法中。我尝试使用EasyMock,我将能够抑制对超类构造函数的调用
CustomListener customListenerMock=createMock(CustomListener.class);
expect(customListenerMock.getParam("CHECK_INTEGRITY")).andReturn(null);
expect(customListenerMock.getParam("WRITE_ANSWER")).andReturn(null);
该文件说我可以在调用这些方法时使用这些方法,并且在这种情况下可以给出指定的输出,即null。
现在我的问题是如何调用私有方法进行测试?我尝试使用反射API,但它不能按预期工作。
代码:
Method InitialiseSecurityConfiguration = Listener .class.getDeclaredMethod(methodToTest, null);
InitialiseSecurityConfiguration.setAccessible(true);
InitialiseSecurityConfiguration.invoke(fileListenerObj);
当我使用反射API调用时,这些方法就像这样调用,并且不会根据需要强制使用super clas方法。
注意:我正在使用旧版应用程序,并且不允许更改我的方法的可见性。
class Listener extends CustomListener{
/*
Some More methods
*/
private boolean params()
{
String integrity = "";
String sWAnswer = "";
try
{
try
{
integrity = super.getParam("CHECK_INTEGRITY");
sWAnswer = super.getParam("WRITE_ANSWER");
**Some Business Logic**
super.info("Request Directory : " + sRequestPath);
super.info("Response Directory : " + sResponsePath);
super.info("Error Directory : " + sErrorPath);
}
}
catch (Exception ex)
{
bCheck = false;
}
return bCheck;
}//closing the method params
}//Closing Listener class
答案 0 :(得分:3)
我会为调用您感兴趣的私有方法的公共方法编写测试。
作为一般规则,针对类的公共API编写单元测试是一种很好的做法,这样可以在不更改测试的情况下更改实现(即私有方法)。
公共API是如何使用类的,因此应该测试什么。