2014-01-14 3 views
0

저는 초보자 단위 테스트를하고 있습니다.모킹 클래스, Java

MyClass를 테스트하고 싶습니다. Apache Tomcat에서 실행중인 앱.

클래스 : -이 복잡 클래스, 나는 GetDataFromSQL 방법에서 원래의 코드를 유지하려는

MyClass extends Report { 
    public MyClass() { 
     super(); //exception in JUnit 
    } 

    public void doSomething() { 
     GetDataFromSQL(params); // I want to test this 
    } 
} 

Report { 
    public Report(){ 
     //this throws null pointer exception in my JUnit tests: 
     ServletContext sc = EnviromentWrapper.getServletContext(); 
    } 

    //necessary method for MyClass. This method uses also other methods in this class. 
    public AnyData GetDataFromSQL(params){} 
} 

당신이 빨리 저를 설명 할 수는 어떻게 보고서를 조롱합니다.

아니면 Tomcat을 사용해야합니까?

답변

2

웹 레이어에 웹 이외의 아티팩트를 묶는 것은 나쁜 생각입니다.

보고서는 서블릿 컨텍스트에 대해 전혀 알지 못합니다.

모의 EnvironmentWrapper#getServletContext() 무언가를 사용하려면 반환하고/또는 ServletContext을 모의 해 필요한 것을 제공하십시오.

+0

Report (내 수업 아님)가 아닌 MyClass를 테스트하고 싶습니다. – liquide

+0

@liquide 그런 다음 Mockito, EasyMock 등과 같은 수많은 조롱 라이브러리를 사용하여 모의 보고서를 작성하십시오. "복잡한 코드" 'GetDataFromSQL'에 추가 정보없이 해석하기가 어렵습니다. –

+1

@DaveNewton - '정적 인'방법이라고 생각합니다. 이것은 약간의 일을 복잡하게합니다. 파워 모의를 사용하여 반환 값을 설정 한 다음 다시 "재생"하지만 일반적인 조롱은 도움이되지 않습니다. –