无法模拟 JUnit 5 中的枚举值

Cannot mock Enum values in JUnit 5

由于我使用枚举值模拟变量的行,我遇到了“不必要的存根”错误:

when(productProjection.getType()).thenReturn(ProductType.USER_ADDED);

我没有模拟 ProductType,但即使尝试模拟如下所示,也没有任何意义:

@Mock
private ProductType productType;

那么,我应该如何在单元测试中使用枚举(我使用 JUnit5)?或者如何解决这个问题?

有时,当您在一组测试中看到这样的错误时 运行,但不是在单个测试中,Mockito 会针对错误的测试报告错误。这是因为 Mockito 不知道您没有调用存根方法,直到下一个测试开始。

想象一下你有这样的测试。

Test 1:
    Stub method X
    Call method X

Test 2:
    Stub method X

Test 3:
    Stub method X
    Call method X

那么测试1和测试2就可以了,因为你没有做错任何事。但是,如果您 运行 按顺序执行所有测试,那么当您开始 运行 测试 3 时,Mockito 检测到您在测试 2 中存根了一个方法但没有调用它。

当然,在这种情况下,如果您 运行 自己测试 3,Mockito 将不会发出任何警告。

我的建议是在发出警告之前查看测试。您的“不必要的存根”最有可能在其中。