2017-04-12 238 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;通过更改您的代码,以便您不必模拟静态呼叫。但是,当然,在这种框架提供的静态方法中添加一个包装是有点奇怪的。