2016-03-22 16 views
0

aufgerufen Ich habe einige hässliche Klasse zu testen, dann muss ich zugeben, dass ich es nicht ändern kann. Gehen wir zur Basis des Problems.Wie man diese Methode testet wurde innerhalb einer anderen Methode

Ich habe eine Klasse bekam, mit einer ziemlich langen statischen Methode, wie folgt aus:

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"; 
} 

}

Dann möchte ich, dass testen, ob es irgendeine Anfrage ist params wird es aufrufen eine Singleton-Methode ab Werk.

Ich habe keine Ahnung, wie man das macht, ist es möglich zu tun? Bitte denken Sie daran, dass ich den Originalcode nicht ändern kann. Danke für die Hilfe.

+0

Wenn Sie es nicht ändern können, können Sie keine Fehler beheben, die Sie darin finden. Wenn Sie Fehler nicht beheben können, warum sollten Sie es testen? – Raedwald

Antwort

0

PowerMock kann Ihnen vielleicht helfen. Wie ich es verstehe, sollte die MockConstructor den Trick tun. Folgen Sie dem Beispiel aus der verknüpften Dokumentation:

Verwandte Themen