什么是构建和运行许多类似单元测试的好技术?

时间:2010-04-20 21:54:58

标签: unit-testing tfs tfs2008

我有一个测试设置,我需要运行许多非常相似的单元测试。例如,在目标环境中需要检查大约40个存储过程。但是,我希望所有测试都按其业务部门进行分组。因此,在40个单独的类中有40个非常相似的TestMethod实例。有点跛脚。另一件事:每组测试都需要在他们自己的解决方案中。因此,业务部门A将有一个名为Tests.BusinessUnitA的解决方案。

我想我可以通过将一个配置对象(带有存储过程的名称来检查,除其他外)传递给TestRunner类来设置这一切。

问题是我失去了单元测试的原子性。我不能只运行其中一个测试,我必须在TestRunner类中运行所有测试。

这就是代码目前的样子。当然,它很好而且紧凑,但如果测试8失败,我就无法运行测试8.

  TestRunner runner = new TestRunner(config, this.TestContext);

  var runnerType = typeof(TestRunner);
  var methods = runnerType.GetMethods()
     .Where(x => 
       x.GetCustomAttributes(typeof(TestMethodAttribute), false)
       .Count() > 0).ToArray();

      foreach (var method in methods)
      {
       method.Invoke(runner, null);
      }

所以我正在寻找建立一组单元测试的建议,这些单元测试包含一个配置对象但不需要我生成许多TestMethods。这看起来可能需要代码生成,但我想在没有它的情况下解决它。

2 个答案:

答案 0 :(得分:0)

您可以使用数据驱动测试吗? http://msdn.microsoft.com/en-us/library/ms182519(VS.80).aspx

然后,您可以排除先前传递的行...

答案 1 :(得分:0)

我的解决方案是将所有测试放在他们自己的程序集中,用属性装饰它们然后通过程序集反映执行测试。比数据驱动的测试更有意义。