我有一些丑陋的课程要测试,然后我不得不承认我无法修改它。那么让我们来解决这个问题。
我有一个类,有一个非常长的静态方法,如下:
public class SomeClass{
public SomeClass(){
}
public static String Dispatch(HttpServletRequest request){
String param1= request.getParameter("param1");
String param2 = request.getParameter("param2");
Factory factory = // .. some Bean, used as Factory
// lot, lot if.. else statements that returning smth based on params
if(param1.equalsIgnoreCase("smthParam1")){
if(param2.equalsIgnoreCase("smthParam2")){
factory.getInstance().invokeSmth();
} else if(param2.equalsIgnoreCase("smthParam2_2")){
factory.getAnotherObjectInstance().invokeSmth();
} else if(param2.equalsIgnoreCase("smthParam2_3")){
factory.getYetAnotherObjectInstance().invokeSmth();
}
}
// More if.. else statements...
return "Error";
}
}
然后,我想测试一下,如果有一些请求参数,它会从工厂调用一个Singleton方法。
我不知道怎么做,有可能吗?请记住,我无法更改原始代码。谢谢你的帮助。
答案 0 :(得分:0)
PowerMock也许可以帮到你。据我了解,MockConstructor应该可以解决问题。按照链接文档中的示例,您应该得到如下内容:
int main(){
int a = 123;
int b=printf("%d",a);
printf("\n%d", b);
return 0;
}