数据库连接的单元测试方法

时间:2014-06-05 14:52:07

标签: c# unit-testing nunit

有没有人建议如何为这种方法编写单元测试方法?

public virtual void OpenDatabaseConnection(string connectionString)
{
    using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();
    }
}

2 个答案:

答案 0 :(得分:1)

单元测试是测试您的代码,而不是第三方的代码。这将是集成测试的一部分。

但是,如果您亲自编写SqlConnection类,并且想测试它是否正常工作,我建议模拟外部依赖项,然后验证外部依赖项(例如数据库驱动程序)是在执行Open方法时调用。

关于您示例的另一个注意事项:您展示的方法将打开连接,然后打开Dispose,因为您周围有using语句。换句话说,一旦打开就无法使用连接,并且方法本身对外部调用者来说是无操作。

答案 1 :(得分:0)

您可以注入某些类型的连接工厂(例如,Func<IDbConnection>),使其返回模拟,然后断言在模拟上调用Open()Dispose()。

当然,所有这些只是有意义的,如果你真的使用连接而不是打开然后处理它,正如rae1在他的回答中正确指出的那样。