使用本地参考的测试方法

时间:2011-10-31 23:07:56

标签: c# unit-testing

在我们的环境中,我们使用自定义数据访问来访问我们的旧Oracle数据库。如果返回的数据只是一行数据,它允许我们调用存储过程并将结果作为DataTable或名称/值对列表返回。它要求我们在每次调用时从这个库中实例化一个新对象,然后确保它在完成时被处理掉。

例如,我们可能会这样做:

    DataReader reader = new DataReader("StoredProcedureName");
    reader.AddParameter(name, DbType.Array, ParameterDirection.Input, data);
    DataTable dt;
    try
    {
        dt = reader.Open();
    }
    finally
    {
        reader.Dispose();
    }

我的问题是我不确定如何使用此库测试进行数据库调用的方法。我对单元测试比较陌生,我正努力开始使用它。我已经开始使用moq并为我的其他应用程序代码编写了一堆测试用例。我不知道如何模拟数据库库。构建一个工厂对象是否有意义,它将创建datareader的新实例,然后模拟工厂?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您无法“单元”测试代码的最低级别(即您称为数据访问层的ADO.Net周围的瘦包装器)。每个其他层都可以使用模拟来隔离它,但为了测试最低层,您应该编写“系统”测试,这些测试将实际打到真实数据库(这将涉及设置它以便您可以重新创建数据库中的数据库)已知状态是测试运行的一部分 - 数据库项目非常适用于此。)