【发布时间】:2010-06-25 12:22:54
【问题描述】:
如果我在 NUnit 测试的 TestFixtureSetup 期间创建了 IDisposable,并且测试引发了意外异常(例如外部资源失败),是否会调用 IDisposable 的 Dispose()?
添加>>
如果没有,NUnit 是否提供保证执行 TestFixtureTearDown 或其他可用于清理的地方?
【问题讨论】:
标签: exception nunit idisposable
如果我在 NUnit 测试的 TestFixtureSetup 期间创建了 IDisposable,并且测试引发了意外异常(例如外部资源失败),是否会调用 IDisposable 的 Dispose()?
添加>>
如果没有,NUnit 是否提供保证执行 TestFixtureTearDown 或其他可用于清理的地方?
【问题讨论】:
标签: exception nunit idisposable
不,它不会被调用。 IDisposable 用于确定性终结,通常与using 语句一起使用。不过,您可以在 TestFixtureTearDown 中调用 Dispose 方法。
【讨论】:
TestFixtureSetUp 失败或抛出异常,TestFixtureTearDown 不会被调用:“只要任何 TestFixtureSetUp 方法运行没有错误,TestFixtureTearDown 方法就是保证运行。如果 TestFixtureSetUp 方法失败或抛出异常,它将不会运行。 NUnit TestFixtureTearDownAttribute Documentation
Dispose() 将在您的 TestFixture 上被调用,这样您就可以在另一个地方放置清理代码。 Release notes on 2.4 Alpha: "如果对象实现了 IDisposable,则在销毁它之前调用 Dispose"