【问题标题】:Can an IMocksControl create an IMockBuilder?IMac sControl 可以创建 MockBuilder 吗?
【发布时间】:2012-03-29 19:11:35
【问题描述】:

我遇到了一个问题,我想使用 IMocksControl 来测试多个对象。因为这允许我检查多个对象的函数调用顺序。

同时,我想使用 IMockBuilder 创建一个模拟对象,只模拟出几个方法。

由于似乎无法从 IMocksControl 创建 IMockBuilder,我该如何实现我的目标?

我在 EasyMock 上看到:public static void checkOrder(Object mock, boolean state) as static,但我不清楚这是仅针对该模拟对象还是对使用 EasyMock.createMock 创建的每个模拟对象进行严格检查。

【问题讨论】:

    标签: java unit-testing mocking easymock


    【解决方案1】:

    为什么要检查对象之间的顺序?确切的顺序真的那么重要吗?

    听起来就像你现在正沿着一条我走过的路前进,幸运地逃脱了。听起来您正在模拟中复制代码并准确验证发生了什么。这是一种糟糕的测试方式,因为您最终会得到非常脆弱的测试,无法清楚地说明该方法的最终结果是什么。

    而是尝试仅验证重要的内容,并针对多个步骤询问第一步是否重要,或者结果发生的情况是否重要。即

    void drive(Person driver, Car car) {
      driver.press(car.getAccelerator());
    }
    

    driver.press 之前调用getAccelerator 并不重要。调用getAccelerator 甚至都不重要。重要的是驾驶员按下汽车的油门。所以你只需要验证驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2015-09-30
      • 1970-01-01
      • 2021-03-21
      • 2021-09-14
      • 2019-02-24
      相关资源
      最近更新 更多