gpt4 book ai didi

java - 模拟多个静态方法

转载 作者:行者123 更新时间:2023-12-01 12:39:33 26 4
gpt4 key购买 nike

我有一个类,它进行两个不同的静态函数调用,其中一个是某个 Util 函数,而另一个是该类的本地函数,如下所示:

public class A {
.
.
public static myfunc1() {
obj1 = myfunc(param);
.
.
Obj obj = Util.getObj(param);
.
.
}

static obj1 myfunc(param) {
..
}
}

我想为这个类编写单元测试,如下所示:

public class Atest {
.
.
public void testMyfunc1() {
.
.
A a = new A();
A spyA = spy(a);
PowerMockito.doReturn(mockObj).when(spyA).myfunc(mockParam);
.
.
}
.
.
}

但它给了我 UnfinishedStubbingException。

我也尝试这样做:

PowerMockito.when(spyA.myfunc(mockParam)).thenReturn(mockObj);

但它不会覆盖该函数。

其次,我需要知道如何重写 Util.getObj() 函数。

最佳答案

经过一番研究,我发现PowerMock提供了一个名为easymock的模块,其中有一个名为mockStaticPartial的方法,它可以模拟类中的特定静态函数。至于Utils.getObj()方法,可以做类似的事情。所以,我的测试类现在看起来像这样:

@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class, Utils.class})
public class Atest {
.
.
@Before
public void setup() {
.
.
mockStaticPartial(A.class, "myfunc");
mockStatic(Utils.class);
.
.
}

public void testMyfunc1() {
.
.
PowerMockito.when(A.mufync()).thenReturn(mockObj1);
PowerMockito.when(Utils.getObj(mockParam)).thenReturn(mockObj);
.
.
//More testing logic goes here
}
.
.
}

关于java - 模拟多个静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com