我有一个构建在SpecFlow之上的集成/回归测试套件(它使用下面的NUnit)。我遇到的问题是,有时候测试中会出现异常,文件可能会保持打开状态。这是后续测试中的问题,因为它们无法读取/写入此文件。
有没有办法检测进程打开的文件然后全部关闭?
答案 0 :(得分:4)
您应该将文件放在using
块中,以便即使抛出异常它们也会被关闭。
答案 1 :(得分:1)
您应该通过处理句柄(最好使用using
子句)或等待终结器来关闭句柄。终结器可能不适合你,因为它们可能不会在下一次测试之前运行。因此,使用try
... finally
或using
处理它们是可行的方法。
虽然您可以枚举句柄并关闭它们,但您不应该这样做。从那以后,句柄可能会被关闭两次,这将导致未定义的行为和崩溃。
以下是一些枚举进程所有句柄的示例代码:http://nopaste.info/58d1aed48f.html您只能将它们过滤到文件句柄。