我有以下静态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字段初始化之间的顺序是什么?
1条答案
按热度按时间vwhgwdsa1#
这是因为你使用了错误的junit版本。将其降级到juit 4,它就可以工作了。