2017-04-12 293 views
0

我正在爲我的項目創建junit測試用例。我有下面的代碼,在那裏我想創建一個模擬,我正在使用junit和mockito核心jar。我試着用下面的代碼,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方法。我怎樣才能模擬一個彈簧靜態類並返回我的模擬屬性對象?

任何幫助將非常感激。

回答

0

嘲笑靜態方法要求你去整個9碼,並使用PowerMock。例如,模擬靜態方法的確切步驟在其documentation中列出。

本質:

  • 使用在測試盒的類級的@RunWith(PowerMockRunner.class)註釋。
  • 在測試用例的類級別使用@PrepareForTest(ClassThatContainsStaticMethod.class)註釋。
  • 使用PowerMock.mockStatic(ClassThatContainsStaticMethod.class)來模擬此類的所有方法。
  • 使用PowerMock.replay(ClassThatContainsStaticMethod.class)將類更改爲重播模式。
  • 使用PowerMock.verify(ClassThatContainsStaticMethod.class)將類更改爲驗證模式。

但當然:考慮不是使用PowerMock;通過更改您的代碼,以便您不必模擬靜態呼叫。但是,當然,在這種框架提供的靜態方法中添加一個包裝是有點奇怪的。