如何在另一个方法中调用该方法

时间:2016-03-22 22:58:40

标签: java unit-testing junit powermock

我有一些丑陋的课程要测试,然后我不得不承认我无法修改它。那么让我们来解决这个问题。

我有一个类,有一个非常长的静态方法,如下:

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方法。

我不知道怎么做,有可能吗?请记住,我无法更改原始代码。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

PowerMock也许可以帮到你。据我了解,MockConstructor应该可以解决问题。按照链接文档中的示例,您应该得到如下内容:

int main(){
  int a = 123;
  int b=printf("%d",a);
  printf("\n%d", b);
  return 0;
}