Junit 测试用例与 Mockito



我正在为我的项目创建 junit 测试用例。我有下面的代码,我想在其中创建一个模拟,

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

我正在使用 junit 和 mockito-core jar。我尝试使用以下代码,

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);

使用上面的代码,它在模拟加载属性方法时抛出错误。如何模拟 Spring 静态类并返回我的模拟属性对象?

任何帮助将不胜感激。

模拟静态方法需要你走完整九码并使用PowerMock。例如,模拟静态方法的确切步骤在其文档中概述。

基本上:

  • 在测试用例的类级别使用 @RunWith(PowerMockRunner.class) 注释。
  • 在测试用例的类级别使用 @PrepareForTest(ClassThatContainsStaticMethod.class) 注释。
  • 使用 PowerMock.mockStatic(ClassThatContainsStaticMethod.class) 来模拟此类的所有方法。
  • 使用 PowerMock.replay(ClassThatContainsStaticMethod.class) 将类更改为重播模式。
  • 使用 PowerMock.verify(ClassThatContainsStaticMethod.class) 将类更改为验证模式。

但是,当然:考虑不使用PowerMock;通过更改代码,这样您就不必模拟静态调用。但是,当然,在这种框架提供的静态方法周围添加一个包装器有点奇怪。

相关内容

  • 没有找到相关文章

最新更新