Arrange、Act、Assert 模式中的 Arrange 和 Act 有什么区别?

cob*_*bby 5 testing unit-testing arrange-act-assert

我真的不明白单元测试中模式的排列部分和行为部分之间的区别。仅排列是否意味着对象的创建?我们为什么要首先将 Arrange 与 Act 部分分开,以及判断某个东西是否属于 Act 部分而不属于 Arrange 部分的标准是什么?在我看来,一切都属于安排部分,因为我们为断言“安排测试”,不是吗?

Dav*_*uth 8

单元测试测试程序中的单个“动作”,通常是对对象实例的单个方法调用。Arrange、Act、Assert 将单元测试组织为三个部分:Ac前、Ac期间和Ac之后。

  • Arrange 部分是所有直到(但不包括)感兴趣的方法调用的内容。在排列部分中,我们设置了调用该方法时希望世界(我们调用该方法的对象、与其交互的其他对象等)所处的状态。

  • Act 是我们正在测试的方法的调用。

  • 并且(为了完整起见),断言是测试的其余部分,我们断言该法案对我们预期的世界产生了影响。

所以我们不“为断言安排测试”,我们为法案安排世界。在编配部分,我们做一些我们已经知道其效果的事情。Arrange 部分中调用的每个方法都应该在其他地方进行单元测试。在该法案中,我们做了一些我们还不知道其效果的事情;这就是测试的真正目的。(在测试驱动开发中,我们可能还没有编写该方法,或者添加到其实现中以通过此特定测试。)