当前位置: 首页 > 知识库问答 >
问题:

如何验证它是调用的最后一个方法

笪成周
2023-03-14

测试类:

public class Test{

    public static void main(String[] args) {
            A a = new A();
            B b = new B();
            a.method2();
            a.method3();
            b.method2();
            b.method1();
        }
}



public class A{

    public void method1(){}

    public void method2(){}

    public void method3(){}
}



public class B{

    public void method1(){}

    public void method2(){}

    public void method3(){}
}

共有1个答案

谈炳
2023-03-14

您提到了阻止您使用inOrder的两个问题

  • 您不知道以前调用过哪些方法
  • 您有私有方法

这两个都不是正当的理由。总是可以使用inorder。

    null
    null

唯一会遇到麻烦的情况是,当直接调用其他类的静态方法或直接读取静态字段时,它们的状态可能会产生影响。在这种情况下,最好将此类调用隔离在一个不包含太多逻辑并充当包装器的类中的单独方法中。这样,您就有了一个可以模拟的包装器,它解决了问题。

一个特例是构造函数,它被调用。构造函数是一种特殊的静态方法。上面提到的静态处理方法对应于创建一个工厂类来构造对象。但是构造函数创建了一些还没有状态的东西。这意味着它的状态对你的测试来说不可能是不可预测的/有问题的。但即便如此,一个可以被模仿的工厂对于避免测试中不必要的复杂性和依赖性也是非常有用的。

结论:

 类似资料:
  • 我正在Weld CDI和Undertow之上构建一个简单的API框架,以熟悉CDI可移植扩展编程模型。它是JAX-RS的一个严格子集: 我的CDI可移植扩展收集所有带有路径注释的带注释的数据类型。当CDI完成引导时,一个下拖Web服务器将启动,所有收集的类型(及其路径)都将注册到下拖RoutingHandler。 扩展负责为每个用@GET/@POST等注释的方法构建HttpHandler。。。 如

  • 我正在测试一个带有预期异常的方法。我还需要验证在抛出异常后是否调用了一些代码(在模拟对象上),但忽略了验证。这是代码: 这是测试代码:

  • 我正在尝试做一个测试,它验证(使用Mockito v1.9.5的)在执行传递

  • 问题内容: 假设我有一个带有两个我不在乎的方法的类,这称为… 下面的两个(仍然来自我的应用程序中的另一个类)都应该通过我的测试: 我不在乎哪个被调用,我只想调用两个变体之一。 在Mockito中,我通常可以执行以下操作: 要么: 是否有一种本地方式说“验证 一个或另一个 至少发生一次”? 还是我必须做一些粗略的事情: 问题答案: 您可以结合使用:

  • 问题内容: 我想验证以下行为的方法如下。 在我的@Test类中,我希望做这样的事情来验证是否使用“ exception.message”和再次使用“ exception.detail”进行了调用 但是Mockito抱怨​​如下 我如何告诉Mockito检查两个值? 问题答案: 进一步的阅读使我尝试使用ArgumentCaptors和以下作品,尽管比我想要的更为冗长。