当前位置: 首页 > 知识库问答 >
问题:

带有Mockito的Junit测试用例

龙嘉誉
2023-03-14

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

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

我正在使用jUnit和mockito核心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);

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

任何帮助都将不胜感激。

共有1个答案

壤驷兴朝
2023-03-14

模仿静态方法需要你走整整九码,并利用PowerMock。例如,模拟静态方法的确切步骤在它们的文档中进行了概述。

本质上:

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

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

 类似资料:
  • 我对junit mockito非常陌生,并尝试使用mockito编写junit测试用例。 这是我的方法,我必须为此编写一个jUnit。 ChefService和ChefApi传递的方法参数来自第三方api 这里是呼叫chefService。listCookbookVersions()将返回CookBookVersion类类型的迭代器,如

  • 我正在使用Mockito编写一个JUnit测试用例,并得到一个NullPointerException。 在我的代码中是这样的:

  • 我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。

  • 我应该如何测试异常?我可以mock connector并且我可以赋予它抛出异常的行为,但是我不明白下一步该怎么做。

  • 更新 根据新的构建系统,层次结构应该如下所示: 我还尝试扩展AndroidTestCase,并在两个父类中都收到了这个错误: 我尝试用这个解决方案解决这个错误,但是项目结构模块依赖项部分没有Android 1.6平台。所以,基本上,我不知道如何在类路径中将junit依赖项移到Android依赖项之上。

  • 我认为自己是单元测试的新手,对McCito和JUnit完全陌生。我必须为一些简单的api调用编写单元测试。但我的测试对我来说似乎有点毫无意义,我不知道我哪里出了问题。我向现有的web服务ManagerWS添加了一个方法。java,见下文。 经理。java方法: 逻辑很简单。构造url,创建标头并将标头添加到请求中。发出请求并从响应中提取状态代码。这是我的测试。注意:类使用@RunAnd(Sprin