代码之家  ›  专栏  ›  技术社区  ›  iftheshoefritz

不跨越集成边界的代码的状态与行为测试

  •  0
  • iftheshoefritz  · 技术社区  · 14 年前

    我有一个方法,它将一些数据对象传递给它,进行一些计算,根据其他字段在对象上填充以前为空的字段,然后返回结果。这个方法并没有真正跨越集成边界——数据对象是一个实体,对其他实体具有相当复杂的依赖树,但是从这个方法的角度来看,它们只是具有状态的对象(感谢ORM)。

    在我看来,单元测试这需要一个状态检查——设置一些数据,运行代码进行计算,并检查结果。这是否是一个合理的理由来忽略那些似乎是全面建议的测试应该检查行为,而不是陈述?或者我读错了测试驱动的文献?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Grant Crofton    14 年前

    我想说你在测试计算方法的性能,所以这不是问题。

    有些人可能会建议将行为放在单独的方法(作为服务)中,而不是放在保存数据的类中,这可能是一种代码味道,但这是另一个问题。

        2
  •  0
  •   Jackson Pope    14 年前

    其行为是,给定的输入状态将获得预期的输出状态。单元测试应该创建具有已知状态的虚拟对象(可能是模拟对象),运行测试中的方法,然后检查输出(在本例中是输入参数的状态)是否正确。