gpt4 book ai didi

java - Mockito 使用 JUnit 5 注入(inject)模拟两次

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

我开始测试 Spring Boot 2.0.0,并且在 Mockito 2.17.0 和 JUnit 5.1.0 中遇到了奇怪的行为。

据我所知,将模拟注入(inject)所需 bean 的方法是将新的 @ExtendWith 注释与 MockitoExtension 类一起使用。

所以,这是我的测试类:

@ExtendWith(MockitoExtension.class)
class MyServiceTest {

@Mock
private A a;

@Mock
private B b;

@InjectMocks
private MyService myService;

// The test methods are omitted
}

这看起来不错,但我发现模拟没有按预期被调用,我发现这是由于内部 ab 的不同实例造成的测试类和服务本身。

实际上,这是因为 MockitoExtension 被应用了两次,而第二次应用时,myService 字段的值并未被计算为 null (显然)这意味着新创建的模拟(ab)未设置为当前 myService 实例或新实例要么。

我是不是忘记了什么?

我认为我可以自己处理模拟,但我认为这不是 InjectMocks 注释的目的。

感谢您的宝贵时间。

最佳答案

看起来您遇到了 Mockito 问题:mockito#1346 .

它已经修复,因此您可以等待公开发布或使用开发版本 2.17.2:https://bintray.com/mockito/maven/mockito-development/2.17.2 (release notes)

关于java - Mockito 使用 JUnit 5 注入(inject)模拟两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49603751/

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