gpt4 book ai didi

java - 是否可以在 JUnit 中设置测试类的方法的返回值?

转载 作者:行者123 更新时间:2023-11-29 07:26:27 25 4
gpt4 key购买 nike

比如说,有下面的类要测试:

public class MyClass {
public void method1() {
...
String str = method3()
...
}
public int method2() {...}
private String method3() {...}
}

我正在用 JUnit 编写 MyClassTest.java。我希望 method3() 返回我分配的值,而不是执行方法本身。我只能使用 Mockito。

这可能吗?

如果是,我该怎么做?

最佳答案

仅使用 Mockito,您无法模拟私有(private)方法。
但是您可以重构您的代码以在另一个类中提取 method3() 作为公共(public)方法,您可以将其用作 MyClass 的依赖项。这样 method3() 自然是可模拟的。

public class MyClass {

private Foo foo;
public MyClass(Foo foo){
this.foo = foo;
}
public void method1() {
...
String str = foo.method3()
...
}
public int method2() {...}
}
public class Foo {
public String method3() {...}
}

现在在单元测试中模拟它:

@Mock
Foo fooMock;
MyClass myClass;

@BeforeEach
void init(){
myClass = new MyClass(fooMock);
}

@Test
public void method1(){
Mockito.when(fooMock.method3()).thenReturn("dummy value");
// call method1()
// do assertions
}

关于java - 是否可以在 JUnit 中设置测试类的方法的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790977/

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