c# - CreateDatabaseConnection 方法的单元测试

标签 c# unit-testing mocking methodology

使用:与VS2010集成的微软单元测试框架

我有一个实现这个接口(interface)的类。

public interface IConnectionManager
{
    IDbConnection OpenDatabase(string path);
    void CloseDatabase();
}

我想为这些方法创建一组测试,但不太确定如何进行。

测试这个的最佳方法是什么?

谢谢。

编辑:

我的 OpenDatabase 实现看起来像这样:

    public OleDbConnection OpenDatabase (string p_path)
    {
        if (Library.StringOperations.IsNullOrEmpty (p_path))
            return null;

        bool error = false;
        string  connectionString= @"CONNECTION STRING HERE";
        try
        {
            OleDbConnection con= new OleDbConnection (connectionString);
            con.Open ();
        }
        catch (Exception)
        {
            error = true;
        }

        if (!error)
            return con;

        return null;
    }

按照@rdkleine 的建议,我想测试返回的连接。

几个问题:

  1. 我是否需要创建一个新的 OleDbConnection 对象来与我返回的对象进行比较,或者我应该检查我返回的连接对象的属性?

  2. 在这种情况下可以使用模拟对象吗?

  3. 考虑到我正在测试与数据库的连接,这仍然是单元测试还是集成测试

再次感谢。

最佳答案

从简单开始。

  • 测试返回连接
  • 存在测试路径
  • 测试路径不存在
  • 测试无法连接
  • 测试可以连接

等等

Read this book about TDD :)

关于c# - CreateDatabaseConnection 方法的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5566815/

相关文章:

java - 我可以使用注释将原始变量注入(inject)模拟类吗?

database - 应该模拟数据库连接吗?

wordpress - 使用 WordPress 全局函数和 PHPUnit 的 TDD

javascript - 在 node.js 中返回一个函数的模拟模块

c# - SqlCommand select from where 问题

c# - 如何在xamarin表单中实现圆形布局

python - 模拟 python 数据库查询

c# - 如何从字符串中删除所有字母字符?

c# - 让 GetDecimal 发挥作用

c# - 为什么我的 asp.net mvc Controller 在单元测试期间不调用它的基类 Initialize 方法?