带有 MockitoTests 的 Micronaut

Micronaut with MockitoTests

我需要在 Micronaut 中测试我的服务层。 我在我的服务层使用 bean 验证,所以我需要在测试阶段注入验证器,我不能只是模拟它。但是,我想模拟其他一些 classes,所以我也在使用 Mockito。

问题是,如果我将 @MicronautTest 放在我的 class 上,所有标有 @Inject 的 bean 都是 Not-Null 这意味着 @Inject 工作正常。但是,一旦我将 @ExtendWith(MockitoExtension.class) 添加到 class 并重新 运行 测试,所有标有 @Inject 的方法现在都是空的,所有标有@Mock 不是空的。

所以看起来我可以在我的测试中使用@Inject,或者我可以使用@Mock,但不能同时使用两者。

@MicronautTest
@ExtendWith(MockitoExtension.class)
class CashServiceTest {

@Inject
private Validator validator;

@Mock
private AvailableCashClient availableCashClient;

有没有人之前遇到过类似的问题?你能指导我正确的配置吗,这样我就可以在同一个测试中同时使用@Inject 和@Mock。

我能够找到问题并且能够使用模拟的 bean 和原始注入的 bean。 问题是我们不应该使用@ExtendWith 注释,并且可以通过使用@micronaut 测试来实现一切。

我正在为我所做的设置粘贴代码。在这种情况下,BusinessClient 是被模拟的 bean,而 Validator 是在没有被模拟的情况下注入的 bean。

@MicronautTest class现金服务测试{

@Inject
AvailableCashClient availableCashClient;

@Inject
Validator validator;

@MockBean(AvailableCashClient)
public AvailableCashClient availableCashClient() {
    return Mockito.mock(AvailableCashClient);
}