单元测试 - 如何在存根数据库数据时设置测试数据

时间:2010-01-29 04:45:01

标签: unit-testing mstest stub stub-data-generation

在我们的单元测试中,我有一个存根对象,它在内存中创建一组数据,以便在单元测试期间使用,以便不使用实时数据库。

我有单元测试,它使用测试中的查询和测试中提供给查询的值来检查从该集返回的行数。我的第一个问题是,因为我们正在使用MSTest并且它不支持参数化测试,所以我们对每组不同的值进行了一次测试,最终得到了许多测试,只是提供给一个例程的值不同。在政治上使用不同的测试框架可能很困难。

同样处理数据有点笨拙,因为它是通过代码将实体添加到集合中创建的,因此很难轻易查看集合中的数据,以及如果我们决定在将来向此集合添加记录,我们需要更新应该在测试中返回的记录数,以便我们的测试非常依赖于这些数据。似乎没有办法自动化这个。是这样的吗?

2 个答案:

答案 0 :(得分:2)

  1. 由于您已经排除了使用其他单元测试框架,如何编写自己的参数化测试。编写一个循环遍历不同数据集的测试,调用具有不同参数的私有帮助器方法。将每个数据集运行的结果收集到“收集参数”。我建议您只记录错误/失败的数据集以减少噪音。在循环结束时,如果collect参数不为空,则发出等效的Assert.Fail并将结果记录到控制台。 (缺点是你无法在GUI中看到单独的测试,如果组织正在监控测试次数,那么所有这些工作只能获得+1。)
  2. 这使您可以根据需要执行专门的故障消息 - 您可以在故障跟踪中包含基本位。这将有助于您“快速查看”哪种情况失败。

答案 1 :(得分:0)

了解Visual Studio 2010终极版如何为数据库测试执行此操作(您可以下载完全配置的VPC)。

一个选项是在测试中添加“context”,因此在初始化测试时,将使用测试所需的参数初始化上下文。您可以通过测试方法中的代码访问参数,或动态地将其分配给要测试的代码(可能不是最佳选项)。

您还可以添加测试应符合的预期结果或更好的条件。这些条件可以从某种数据源(例如数据库)初始化并作为数据集添加。创建一个方法来评估测试方法的条件。

考虑构建特定的类来处理不同的上下文设置或条件,并创建一个测试类可以继承的基本测试类(添加功能)。

相关问题