代码之家  ›  专栏  ›  技术社区  ›  Eric

如何对数据库类进行单元测试

  •  5
  • Eric  · 技术社区  · 14 年前

    这个问题可能已经问过很多次了,但这里是:

    我有一个满是数据库连接的类

    开放连接
    查询数据库
    读取值
    紧密连接

    我应该如何进行单元测试?

    我想我可以模拟MySql类(对于c#),但这也需要做很多工作。

    有些语句是“INSERT INTO”,对此我该怎么办?

    3 回复  |  直到 14 年前
        1
  •  7
  •   jgauffin    14 年前

    很难测试的东西 tightly coupled 或不遵循 Single Responsibility principle .

    repository pattern . 每个实体(表或视图)都应该有自己的类来获取数据。

    使用数据接口而不是特定的驱动程序实现: IDbConnection SqlConnection . 使用 DbProviderFactory 以获得正确的连接实现。然后使用 connection.CreateCommand()

    这样做可以使测试数据层更加容易。记住,数据分析器不应该有任何逻辑。它的唯一目的是从数据源加载数据。

        2
  •  2
  •   Fredrick    14 年前

    最简单的方法是创建一个新的测试数据库,生成一些插入查询,然后将结果集存储在一个列表或其他东西中,然后使用调试器运行它,看看它是否将结果集存储在您创建的列表中。

    在源代码中没有任何intsert,请使用sql management studios并在那里进行插入,直到您知道连接和所有东西都工作正常。现在就把这些值都列出来。

        3
  •  0
  •   StumpDK    9 年前

    您可以在您的计算机上使用本地运行的实时MySql数据库。

    为此,我制作了一个Nuget包,您可以将其添加到项目中: https://github.com/stumpdk/MySql.Server