PowerMock Mockito:如何模拟所有静态方法?

发布于 2024-10-15 06:07:18 字数 388 浏览 7 评论 0原文

使用PowerMock(使用Mockito)时,我们是否需要模拟类的所有静态方法?我的意思是,假设我们有:

class MockMe {
   public static MockMe getInstance(){
              //return new Instance via complex process;
   }

   public static List<X> anotherStaticMethod(){
      // does xyz
   }
}

我的问题是,如果我需要模拟 getInstance 方法,是否也需要模拟“anotherStaticMethod”?

PowerMock版本:1.3,Mockito版本:1.8

Do we need to mock all static methods of a class when using PowerMock (with Mockito)? I mean, suppose we have:

class MockMe {
   public static MockMe getInstance(){
              //return new Instance via complex process;
   }

   public static List<X> anotherStaticMethod(){
      // does xyz
   }
}

My question, if I need to mock getInstance method, is it necessary to mock "anotherStaticMethod" as well?

PowerMock version:1.3, Mockito version:1.8

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

第七度阳光i 2024-10-22 06:07:18

不,您可以在 PowerMockito 中使用 spy 来使用部分模拟。或者您可以使用存根 API:

stub(method(MockMe.class, "getInstance")).toReturn(myMockMeInstance);

No you can use partial mocking using spy in PowerMockito. Or you can use the stubbing API:

stub(method(MockMe.class, "getInstance")).toReturn(myMockMeInstance);
一瞬间的火花 2024-10-22 06:07:18

模拟静态方法
如何模拟和存根:

在类级别添加@PrepareForTest

@PrepareForTest(Static.class) // Static.class contains static methods

调用 PowerMockito.mockStatic() 来模拟静态类(使用 PowerMockito.spy(class) 来模拟特定方法):

PowerMockito.mockStatic(Static.class);

只需使用 Mockito.when() 来设置您的期待:

Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);

Mocking Static Method
How to mock and stub:

Add @PrepareForTest at class level.

@PrepareForTest(Static.class) // Static.class contains static methods

Call PowerMockito.mockStatic() to mock a static class (use PowerMockito.spy(class) to mock a specific method):

PowerMockito.mockStatic(Static.class);

Just use Mockito.when() to setup your expectation:

Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文