使用PowerMock和TestNG模拟单个静态方法

编程入门 行业动态 更新时间:2024-10-28 08:16:36
本文介绍了使用PowerMock和TestNG模拟单个静态方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 class StaticClass { public static String a(){ return "a"; } public static String ab(){ return a()+"b"; } }

我想模拟StaticClass::a,以便它返回"x",并且对StaticClass.ab()的调用导致"xb" ...

I want to mock StaticClass::a so that it returns "x" and the call to StaticClass.ab() results in "xb"...

我发现在PowerMock和TestNG中很难...

I find it very hard in PowerMock and TestNG...

我现在正在测试的确切代码:

the exact code I am testing righ now:

class StaticClass { public static String A() { System.out.println("Called A"); throw new IllegalStateException("SHOULD BE MOCKED AWAY!"); } public static String B() { System.out.println("Called B"); return A() + "B"; } } @PrepareForTest({StaticClass.class}) public class StaticClassTest extends PowerMockTestCase { @Test public void testAB() throws Exception { PowerMockito.spy(StaticClass.class); BDDMockito.given(StaticClass.A()).willReturn("A"); assertEquals("AB", StaticClass.B()); // IllegalStateEx is still thrown :-/ } }

我对以下内容有Maven依赖项:

I have Maven dependencies on:

<artifactId>powermock-module-testng</artifactId> and <artifactId>powermock-api-mockito</artifactId>

推荐答案

为什么不尝试:

PowerMockito.mockStatic(StaticClass.class); Mockito.when(StaticClass.a()).thenReturn("x"); Mockito.when(StaticClass.ab()).thenCallRealMethod();

更多推荐

使用PowerMock和TestNG模拟单个静态方法

本文发布于:2023-10-31 03:50:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1544910.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:静态   方法   PowerMock   TestNG

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!