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

标签 c# unit-testing

我有一组 MSTest 测试用例,它们使用具有这些属性的方法从测试开始后创建的测试数据库中的表中删除所有行;每隔一段时间,我都会从数据库中的一个单元测试中得到一行。

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

最佳答案

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

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

根据您的数据访问层,更可能的解释是您丢失了数据库连接并且清理功能无法获得新连接。这通常表明需要使您的 DAL 更健壮,并且还表明测试中发生了您未预料到的事情导致 DAL 崩溃。

关于c# - [ClassCleanup]和[TestCleanup]在什么情况下不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899770/

相关文章:

c# - 使用 C#/Moq 框架模拟带有输入参数的异步 DbContext 函数

python - 我如何开始使用 python 在 web Scrapy 中编写单元测试?

c# - 当我的 MVC Controller 中没有数据时,尝试读取无效

c# - 复杂的数据库操作

c# - 比较 typeof(Type) 和 System.RuntimeType

java - 生成一个充满任意值的模拟对象

unit-testing - rxjava testScheduler竞争条件

c# - 如何检查我的 Discord.Net 机器人是否已连接到语音 channel

c# - 如何使用迁移将描述添加到 Entity Framework Core 代码优先中的列?

unit-testing - hbase-testing-utility 的 sbt 依赖管理问题