我正在为图书馆创建单元测试。该库连接到数据源,然后我正在做一些测试。此后,数据源将被断开连接。



这是一个可以理解以上描述的示例:

[TestMethod]
public void Test()
{
    var datasourceObject = new DatasourceObject("location-string");
    datasourceObject.Connect();

    // Do some Stuff with Asserts

    datasourceObject.Disconnect(); // must be executed
}

是否有最佳实践来实现这一目标?

最佳答案

如果您在其他测试中使用资源,则将其移至类字段并使用[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
    }
}

10-08 04:56