2017-04-12 11 views
0

내 프로젝트를위한 junit 테스트 케이스를 만들고 있습니다. 나는 모의를 생성하고자하는 아래의 코드,Mockito Junit 테스트 케이스

String propertyFilePath = System.getProperty("path.to.properties"); 
Resource propertyFile = new FileSystemResourceLoader().getResource(propertyFilePath); 
Properties properties = PropertiesLoaderUtils.loadProperties(propertyFile); 

내가 JUnit을하고 mockito 코어 항아리를 사용하고 있습니다. 아래 코드로 시도했습니다.

System.setProperty("path.to.properties", "dummyPathToProperties"); //invalid Path 
Properties properties = mock(Properties.class); 
Resource propertyFile = new FileSystemResourceLoader().getResource("dummyPathToProperties"); 
when(PropertiesLoaderUtils.loadProperties(propertyFile)).thenReturn(properties); 

위 코드를 사용하면 loadProperties 메소드를 조롱 할 때 오류가 발생합니다. 스프링 정적 클래스를 조롱하고 mock 속성 객체를 반환하려면 어떻게해야합니까?

도움이 될 것입니다.

답변

0

도킹 정적 방법을 사용하면 9 야드 전체를 내려 가서 PowerMock을 사용해야합니다. 정적 메서드를 모방하는 정확한 단계는 예를 들어 documentation에 나와 있습니다. 본질적으로

:

  • 를 사용하여 테스트 케이스의 클래스 수준의 @RunWith (PowerMockRunner.class) 주석.
  • 테스트 케이스의 클래스 수준에서 @PrepareForTest (ClassThatContainsStaticMethod.class) 주석을 사용하십시오.
  • PowerMock.mockStatic (ClassThatContainsStaticMethod.class)을 사용하여이 클래스의 모든 메서드를 모의 처리합니다.
  • PowerMock.replay (ClassThatContainsStaticMethod.class)를 사용하여 클래스를 재생 모드로 변경하십시오.
  • 클래스를 확인 모드로 변경하려면 PowerMock.verify (ClassThatContainsStaticMethod.class)를 사용하십시오.

물론 : 고려해보십시오 PowerMock; 고정 전화를 조롱 할 필요가 없도록 코드를 변경하십시오. 물론 프레임 워크가 제공하는 정적 메서드를 래퍼 (wrapper)에 추가하는 것은 다소 이상합니다.