【发布时间】:2019-10-03 14:58:56
【问题描述】:
假设我想要测试以下通用工作流程:
CreateObject --> AddItemsToObject --> SaveObject --> ChangeObjectToFirstState --> ChangeObjectToSecondDependentOnBeingInFirstState --> 等等...
我应该:
A) 为这些状态中的每一个完整编写一个测试用例 - IE,CreateObject 将测试对象是否正确创建,AddItemsToObject 将使用 CreateObject 使用的代码的副本,然后测试是否向对象添加项目处理得当,SaveObject 会使用 AddItemsToObject 使用的代码的副本,然后将对象保存到数据库并测试是否正确保存等...
B) 为 CreateObject 编写测试用例,成功返回一个创建的对象,然后 AddItemsToObject 将其用作要添加项目的对象,然后 SaveObject 将其用作要保存的对象,等等……
C) 不必费心将链的每个步骤拆分为单独的测试用例,只需为每个完整的链编写一个测试用例
我已尝试搜索可能无法回答此问题的其他示例 - 如果已彻底回答,请链接我相应的问题 :)
* 编辑 *
重新措辞一下,让它更像一个问题:
是否有任何具体原因不使用基于链的方法为工作流编写测试用例?
换句话说,对于多阶段工作流,在实现测试用例时,是否有任何特定原因不首先调用测试用例以将对象从状态#2 推进到状态#3用于将对象从状态 #3 推进到状态 #4?
【问题讨论】:
-
您是在描述调用堆栈还是工作流?
-
这是一个基于意见的问题,考虑到我会选择 A,并且可能还会为每个完整的链选择一个测试用例。 B 的问题在于,如果出现问题而测试失败,则必须遍历整个链条才能了解原因。
-
@bradbury9,不完全确定你的意思 - 我正在尝试为状态机编写测试用例,基本上可以通过流程图来描述。我不是在谈论为特定状态编写测试用例。相反,我问的是,例如,测试第四个状态是否应该首先调用将其带到第三个状态的测试用例(反过来,第二个状态也一样,等等......),或者是否测试第四状态应该包含将其带到第四状态的代码。
标签: c# unit-testing chaining