有没有办法验证Mockito中是否在methodTwo之前调用了methodOne

public class ServiceClassA {
    public void methodOne(){}
 }

public class ServiceClassB {
    public void methodTwo(){}
 }

public class TestClass {
    public void method(){
        ServiceClassA serviceA = new ServiceClassA();
        ServiceClassB serviceB = new ServiceClassB();
        serviceA.methodOne();
        serviceB.methodTwo();
    }
}

推荐答案

InOrder可以帮你做到这一点.

ServiceClassA firstMock = mock(ServiceClassA.class);
ServiceClassB secondMock = mock(ServiceClassB.class);

Mockito.doNothing().when(firstMock).methodOne();   
Mockito.doNothing().when(secondMock).methodTwo();  

//create inOrder object passing any mocks that need to be verified in order
InOrder inOrder = inOrder(firstMock, secondMock);

//following will make sure that firstMock was called before secondMock
inOrder.verify(firstMock).methodOne();
inOrder.verify(secondMock).methodTwo();

Java相关问答推荐

Java同步小服务器

Kotlin ReadWriteProperty:无法使用T作为具体化类型参数.改为使用类

是否可以从@ TrustMapping中删除特定方法的基路径?

JPackaged应用程序启动MSI调试,然后启动System. exit()

Java模式匹配记录

取消按钮,但没有任何操作方法引发和异常

我无法将附件发送到NetBeans之外

Java 21 struct 化连接货币,需要可预知的子任务异常排序

如何找到MongoDB文档并进行本地化?

CompleteableFuture是否运行在不同的内核上?

在Java中如何从Executors.newFixedThreadPool(MAX_THREAD_COUNT())迁移到虚拟线程

如何只修改父类ChroniclerView位置0处的第一个嵌套ChroniclerView(child)元素?

如何在Jooq中获取临时表列引用?

Java中HashSet的搜索时间与TreeSet的搜索时间

将BlockingQueue+守护程序线程替换为执行器

在ECLIPSE上的M1 Pro上运行JavaFX的问题

使用同步方法中的新线程调用同步方法

按长度排序字符串数组

为什么Spring要更改Java版本配置以及如何正确设置?

升级版本后出现非法访问错误