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

本文关键字:测试方法 单元 数据库连接 用于 | 更新日期: 2023-09-27 18:06:48

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

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

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

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

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

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

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

当然,所有这些都是有意义的,如果你实际上使用连接,而不是打开然后释放它,正如rae1在他的回答中正确指出的。