gpt4 book ai didi

java - 模拟实例方法

转载 作者:行者123 更新时间:2023-12-02 04:27:17 25 4
gpt4 key购买 nike

也许我遗漏了一些东西,有人可以告诉我为什么这个单元测试用例不起作用吗?

谢谢。

import java.util.Random;


public class A {
private B b;

public A() {
b = new B();
}

public int methodA() {
return b.methodB();
}

}

//只返回一个随机数

class B {
public int methodB() {
return new Random().nextInt();
}
}

//这是我的测试方法,它不打印 20

    @Test
public void testMethodA() {
B b = Mockito.mock(B.class);
Mockito.when(b.methodB()).thenReturn(20);

A a = new A();
System.out.println(a.methodA());
}

最佳答案

A实例化它自己的B实例,所以你的模拟实例永远不会被使用。相反,您可以重构 A 的构造函数,以获取将在内部使用的 B 对象的工厂或 B 的实例。

要执行您最初描述的操作,您可以使用 PowerMock 完全替换该方法。

@PrepareForTest(B.class)
@RunWith(PowerMockRunner.class)
public class MyTests {
@Test
public void myTest {
// Make B.methodB always return 20
PowerMock.stub(PowerMock.method(B.class, "methodB")).toReturn(20);
}
}

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

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