答案:我没有清理我的ConnectionPools。
解决的方案是:
设定:
测试:
TearDown中:
SqlConnection.ClearAllPools();
原始问题在首页。
大家好
测试场景是:
设定:
测试:
TearDown中:
在我进入TearDown阶段之前,一切都很顺利。我总是收到以下错误:
无法删除数据库“TEMP_NUnit”,因为它当前正在使用中。
这让我感到困惑,因为我正在关闭(在finally语句中显式调用conn.Close)并正确地处理(通过using语句)我的所有DbConnection对象。在TearDown到来之前,“TEMP_NUnit”数据库中不应该有任何运行。
如果我关闭NUnit然后重新打开它,SetUp的第2步总是先行。
我不确定我在这里做错了什么。任何指向正确方向的人都会受到赞赏。
答案 0 :(得分:5)
啊,但是在放弃数据库之前你忘了做这件小事:
SqlConnection.ClearAllPools();
默认情况下,即使您之前关闭了连接池,连接池也将保持与数据库的连接。执行SqlConnection.ClearAllPools()
实际上会强制关闭所有连接。然后,您可以连接到master
并删除临时数据库。
之前,它给我带来了相当多的悲伤:)。
答案 1 :(得分:0)
可能要考虑Michael Feathers Unit Testing Rules:
如果出现以下情况,则测试不是单元测试: