【发布时间】:2014-09-28 10:54:14
【问题描述】:
我正在使用 NUnit 和 Resharper 作为测试运行器为我的应用程序编写一些测试。我有一个测试,它使用自定义数据访问层在 SQL 中创建条目,然后检查它们是否实际上已创建。此检查是通过使用 SqlDataAdapter 的更直接连接来完成的。
收集测试结果后,测试条目从表中删除(在测试方法中,而不是在 TearDown() 中)。我注意到,由于各种原因,我经常在中间停止测试,而且它们显然没有被清理,因为我告诉测试停止,所以它永远不会到达清理代码。根据我的经验,当使用停止按钮停止测试时,即使 TearDown() 也不会被调用。
我的问题是:当我点击停止按钮时,有没有办法调用清理程序来删除测试工件?
【问题讨论】:
-
我怀疑这是可能的,因为您实际上是在退出程序。注意:这是集成测试,而不是单元测试。最好的做法是让每个测试都创建自己的数据库,而不是让它们混合在一起。
-
关于集成测试的部分你是正确的。我觉得为了确保应用程序的可靠性,最好在尽可能接近真实的条件下进行测试,这就是我决定针对实际数据库进行测试的原因。测试创建自己的数据库有优势吗?这是测试从您的应用程序到数据库模式的整个链的可靠方法吗?编辑:我在评论完成之前不小心按了 Enter。
-
这就是存在模拟框架(例如 NSubstitute)的原因。
标签: unit-testing nunit integration-testing