我正在尝试验证类InOrder中的静态方法。下面是包含一些静态方法的示例类
public class SampleClass {
public static void staticMethod1(Param1 param)
{
//doSomething
}
public static void staticMethod2(Param2 param)
{
//doSomething
}
public static void staticMethod2(Param3 param)
{
//doSomething
}
}
public class parent{
public void method() {
SampleClass.staticMethod1(...);
SampleClass.staticMethod2(...);
SampleClass.staticMethod3(...);
}
}我的测试看起来像这样
@Test
public void test(){
try (MockedStatic<SamplClass > mockSamplClass = mockStatic(SamplClass .class, Answers.CALLS_REAL_METHODS))
{
//doStuff
mockSampleClass.verify(()->SampleClass.staticMethod1(...));
mockSampleClass.verify(()->SampleClass.staticMethod2(...));
mockSampleClass.verify(()->SampleClass.staticMethod3(...));
}
}对这三种静态方法是否有执行InOrder验证的方法?因为Mockito.inOrder只接受模拟类型,而不接受MockedStatic类型。
现在,我正在寻找莫奇托的答案,不涉及PowerMockito。
发布于 2022-08-11 11:45:34
对于那些像我一样在谷歌上发现这个问题的第一个结果的人,现在Mockito支持这一点。使用您的例子:
@Test
public void test(){
try (MockedStatic<SamplClass > mockSamplClass = mockStatic(SamplClass.class, Answers.CALLS_REAL_METHODS)) {
//doStuff
InOrder inOrder = Mockito.inOrder(SamplClass.class);
inOrder.verify(mockSampleClass, ()-> SampleClass.staticMethod1(...));
inOrder.verify(mockSampleClass, ()-> SampleClass.staticMethod2(...));
inOrder.verify(mockSampleClass, ()-> SampleClass.staticMethod3(...));
}
}有关更多信息,请参见Mockito github问题
https://stackoverflow.com/questions/64947196
复制相似问题