2010-01-29 84 views
0

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

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

对数据进行处理有点难以实现,因为它是通过代码将实体添加到集合中创建的,所以很难轻松查看集合中的数据,并且如果我们决定在将来向该集合添加记录,我们需要更新测试中应该返回的记录数,以便我们的测试非常依赖这些数据。似乎没有办法自动执行此操作。是这样吗?

回答

2
  1. 由于您已经排除使用另一个单元测试框架,如何编写自己的参数化测试。编写一个循环遍历不同数据集的测试,使用不同的参数调用私有助手方法。将每个数据集运行的结果收集到“收集参数”。我建议你只记录错误/失败的数据集以减少噪音。在循环结束时,如果收集参数不为空,则发出相当于Assert.Fail并将结果记录到控制台。 (不利之处在于,您无法在GUI中看到单个测试,并且如果该组织正在监视测试的次数,那么对于所有这些工作,您只能获得+1。)
  2. 这可以让您以专门的失败如你所愿 - 你可以在失败轨迹中包含必要的位。这将帮助您“快速查看”哪种情况失败。
+0

+1。绝对有必要开展自己的数据驱动测试课程;我们在获得NUnit 2.5之前做了类似的事情。它工作得很好:) – 2010-01-30 23:42:18

0

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

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

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

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