0

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

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

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

4

2 回答 2

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

看看 Visual Studio 2010 终极版是如何进行数据库测试的(您可以下载完全配置的 VPC)。

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

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

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

于 2010-09-19T16:47:14.670 回答