gpt4 book ai didi

java - 使用 Mockito 在 Spring 进行单元测试

转载 作者:行者123 更新时间:2023-12-01 14:44:36 25 4
gpt4 key购买 nike

今天在使用 Mockito 和 spring 时,我对这种情况感到震惊,

    public class MyClass {

private MyService myService;

int doSomethingElse(String str) {
.....
myService.doSomething(str);
...
}
}

public interface MyService {
String doSomething(String str);
}


public class Class1 {
private MyClass myClass;

public Stirng methodToBeTested() {
myClass.doSomethingElse("..");
}
}

public class class1Test {

@Mock
MyService myService;

@Resource
@Spy
@InjectMocks
MyClass myClass;

@Resource
@InjectMocks
Class1 class1;

public void setUPTest() {
MockitoAnnotations.initMocks(this);
}

@Test
public void methodToBeTestedTest() {
this.setUPTest();
...
class1.methodToBeTested();
}

}

这里我想模拟“MyService”。但是MyService用在“MyClass”中,它用在“Class1”中。

我想使用 spring 初始化“MyClass”和“Class1”。

当我尝试运行此测试时,出现以下异常

org.mockito.exceptions.base.MockitoException:无法模拟/ spy 类 $Proxy79Mockito 无法模拟/监视以下内容: - 期末类(class) - 匿名类 - 原始类型

谁能帮我解决这个问题吗?

最佳答案

您正在测试 Class1,它仅具有 MyClass 作为依赖项。 MyService 与此测试无关。您应该模拟 MyClass 并测试对 doSomethingElse 的调用。

如果您想测试对 MyServicedoSomething 的调用,您应该编写一个 MyClassTest 来模拟对 MyService 的依赖关系.

关于java - 使用 Mockito 在 Spring 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564420/

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