【发布时间】:2010-02-18 08:28:00
【问题描述】:
假设我在一个测试类中有几个单元测试(在我的例子中是 VSUnit 中的 [TestClass])。我试图在每个测试中只测试一件事(但这并不意味着只有一个 Assert)。想象一下,有一个测试(例如 Test_MethodA() )也可以测试其他测试中使用的方法。我不想在其他使用它来避免重复性/可维护性问题的测试中对此方法进行断言,因此我仅在这一个测试中使用了断言。现在,当此测试失败时,依赖于正确执行该测试方法的所有测试也会失败。我希望能够更快地找到问题,所以我想以某种方式指向 Test_MethodA。它会例如如果我可以让测试类中的一些测试以特定的顺序执行,并且当它们失败时,我会开始在第一个失败的测试中寻找失败的原因。你知道怎么做吗?
编辑:通过建议以特定顺序执行测试的解决方案,我可能走得太远并且方向错误。我不在乎测试的顺序。只是如果先决条件无效,某些测试将始终失败。例如。我有一个测试 DAO 类的测试类(好吧,可能不是 UNIT 测试,但是数据库存储过程中有需要测试的逻辑,但我认为这不是重点)。我需要向表中插入一些记录,以测试负责检索记录的方法(我们称之为 GetAll())是否以正确的顺序获取它们,例如我使用 DAO 类上的方法进行插入。我们称之为Insert()。我已经进行了测试,以验证 Insert() 方法是否按预期工作。现在我想测试 GetAll() 方法。为了使数据库处于所需状态,我使用 Insert() 方法。如果 Insert() 不起作用,大多数 GetAll() 测试都会失败。我更愿意标记无法通过的测试,因为 Insert() 不能作为不确定而不是失败。如果我知道首先要研究哪种方法/测试,就可以轻松找到问题的原因。
【问题讨论】:
标签: unit-testing vsunit