我正在为图书馆创建单元测试。这个库连接到数据源然后我正在做一些测试Stuff之后数据源将被断开连接。
如果其中一个测试失败,则方法终止,我无法执行断开连接功能。
以下是一个示例,以说明上述说明:
[TestMethod]
public void Test()
{
var datasourceObject = new DatasourceObject("location-string");
datasourceObject.Connect();
// Do some Stuff with Asserts
datasourceObject.Disconnect(); // must be executed
}
答案 0 :(得分:10)
如果您在其他测试中使用资源,请将其移至类字段并使用[TestInitialize]
和[TestCleanup]
获取并释放该资源:
private Foo datasourceObject;
[TestInitialize]
public void TestInitialize()
{
this.datasourceObject = new DatasourceObject("location-string");
this.datasourceObject.Connect();
}
[TestMethod]
public void Test()
{
// Do some Stuff with Asserts
}
[TestCleanup]
public void TestCleanup()
{
this.datasourceObject.Disconnect();
}
如果您仅在此测试中使用资源,请使用try
.. finally
[TestMethod]
public void Test()
{
try
{
var datasourceObject = new DatasourceObject("location-string");
datasourceObject.Connect();
// Do some Stuff with Asserts
}
finally
{
datasourceObject.Disconnect(); // must be executed
}
}
如果资源是一次性的,则为using
语句:
[TestMethod]
public void Test()
{
using(var datasourceObject = new DatasourceObject("location-string"))
{
datasourceObject.Connect();
// Do some Stuff with Asserts
}
}