在什么情况下[ClassCleanup]和[TestCleanup]不运行

时间:2011-02-04 15:36:02

标签: c# unit-testing

我有一组MSTest测试用例,它们使用带有这些属性的方法从测试开始后创建的测试数据库中的表中删除所有行;我偶尔会在数据库中的一个单元测试中得到一行。

由于我正在保存测试开始时间并删除时间戳比它更新的所有记录,因此我能看到记录存活的唯一方法是未调用清理代码。

2 个答案:

答案 0 :(得分:4)

嗯,首先,“单元测试”技术上不应该触及数据库。但是,我也使用NUnit进行集成测试,所以没什么大不了的。

清理方法不能完全运行的唯一情况是清理函数中是否存在错误,或者是否导致运行时关闭。我知道的唯一可以做的就是堆栈溢出和内存不足错误。从调试器中止测试也会导致跳过清理阶段。

根据您的数据访问层,更可能的解释是您丢失了数据库连接并且清理功能无法获得新的连接。这通常表明需要使您的DAL更加强大,并且还表明在测试中发生了一些您不期望的事情,导致DAL崩溃。

答案 1 :(得分:2)

如果您正在调试测试并在测试运行完成之前停止调试器,则不会调用它。

相关问题