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

模拟带有参数[duplicate]的静态方法

乐刚毅
2023-03-14

有没有办法用参数模拟静态方法。

我看到了很多关于这个问题的问题,但是我找不到任何与之相关的问题。

共有1个答案

汤才捷
2023-03-14

可以使用PowerMockito模拟静态方法。这里有一个完整的例子。

@RunWith(PowerMockRunner.class)
@PrepareForTest(Helper.class)
public class YourTestCase {
   @Test
   public void testMethodThatCallsStaticMethod() {
      // mock all the static methods in a class called "Static"
      PowerMockito.mockStatic(Helper.class);
      // use Mockito to set up your expectation
      Mockito.when(Helper.getName("abc")).thenReturn("foo");

      // execute your test
      String result = Helper.getName("abc");

      //assert the result
      Assert.assertEquals("foo", result);

      // to start verifying behavior
      PowerMockito.verifyStatic(Mockito.times(1));
      // IMPORTANT:  Call the static method you want to verify
      Helper.getName("abc");
  }
}
 类似资料:
  • 我正在尝试模拟一个静态void方法,该方法采用参数 我的下属:

  • 我试图模仿下面的行,但它在执行时给出了一个错误,它说: 此处检测到错误的参数匹配器: when(mock.get(anyInt())).thenreturn(null); doThrow(new RuntimeException()).When(mock).SomeVoidMethod(anyObject()); verify(mock).somemethod(contains(“foo”)) 这

  • 我有自定义的Log4j2 appender: 我想模拟:

  • 在安装到AEM 5.6.1实例之前,我正在使用maven构建和测试我的代码。我已经编写了单元测试,这些测试使用wcm的实现从aem模拟中获益。io和其他需要使用powermockito模拟静态方法的单元测试。 以下是我对aem上下文、sling Mock和powermock的maven依赖关系。 在我的课堂上,我正在为aem上下文设置规则,并准备一些用于模拟的静态类: 当我通过命令行运行mvn测试

  • 问题内容: 我的代码中有一个静态方法,希望以某种方式进行模拟。 我正在使用jmock。 我想可以做到这一点的一种方法是在静态方法周围设置“包装类”并模拟该方法,但是我希望有一个更好的解决方案。 我要用这种错误的方式? 反馈: 我将要有一个接口和一个类,该接口和类具有一个仅称为静态方法的方法。这将允许我通过仅模拟对此包装器类的调用来模拟逻辑。(即使谈论它我也觉得很脏:)) 问题答案: 我们不支持在j

  • 例如,我有以下课程: 我有一个类使用她的方法: 测试等级: 尝试运行测试时遇到的错误: 组织。莫基托。例外情况。基础MockitoException:对于TesteStatico,静态模拟已在当前线程中注册以创建新的模拟,必须取消注册现有的静态模拟注册 项目中LIB的版本: junit-jupiter 5.5.2 mockito-junit-jupiter 3.2.14 mockito-内联3.2