我有一组 MSTest 测试用例,它们使用具有这些属性的方法从测试开始后创建的测试数据库中的表中删除所有行;每隔一段时间,我都会从数据库中的一个单元测试中得到一行。
由于我正在保存测试开始时间并删除所有时间戳比它更新的记录,所以我能看到记录幸存的唯一方法是未调用清理代码。
最佳答案
好吧,首先,从技术上讲,“单元测试”不应该触及数据库。但是,我也使用 NUnit 进行集成测试,所以没什么大不了的。
清理方法无法完整运行的唯一情况是清理函数中出现错误,或者异常导致运行时关闭。我知道唯一可以做到的是堆栈溢出和内存不足错误。从调试器中止测试也会导致跳过清理阶段。
根据您的数据访问层,更可能的解释是您丢失了数据库连接并且清理功能无法获得新连接。这通常表明需要使您的 DAL 更健壮,并且还表明测试中发生了您未预料到的事情导致 DAL 崩溃。
关于c# - [ClassCleanup]和[TestCleanup]在什么情况下不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899770/