mockito 带有@Mock注解的字段初始化与@BeforeAll

pobjuy32  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

我有以下静态mocking设置:

@ExtendWith(MockitoExtension.class)
TestClass{

@Mock
private static ClassB classBInstance;

    @BeforeAll
    static void setup(){
        MockedStatic<ClassA> mockedStatic = mockStatic(ClassA.class);
                mockedStatic.when(() -> ClassA.someMethod(ClassB.class)).thenReturn(classBInstance);
    }

    @Test
    void testMethod(){
        var mockedInstanceReference = ClassA.someMethod(ClassB.class);
    }

}

字符串
在这里,我在 mockedInstanceReference 字段处获得了一个空引用。但在此配置中:

@ExtendWith(MockitoExtension.class)
TestClass{
    @Mock
    private static ClassB classBInstance;

        @Test
        void testMethod(){
            MockedStatic<ClassA> mockedStatic = mockStatic(ClassA.class);
                    mockedStatic.when(() -> ClassA.someMethod(ClassB.class)).thenReturn(classBInstance);
            var mockedInstanceReference = ClassA.someMethod(ClassB.class);
        }

}


我没有问题,我得到了正确的mocked引用。我的问题是:为什么?在junit 5中,@BerforeAll注解处理和@Mock字段初始化之间的顺序是什么?

vwhgwdsa

vwhgwdsa1#

这是因为你使用了错误的junit版本。将其降级到juit 4,它就可以工作了。

相关问题