2

我已经为一个软件编写了很多测试(这是一件很棒的事情),但它本质上是作为 C# 中的独立测试构建的。虽然这工作得很好,但它也有一些缺点,其中最重要的是它没有使用标准的测试框架,并且最终要求运行测试的人注释掉对不应该运行的测试的调用(当不希望运行整个测试“套件”时)。我想将它整合到我的自动化测试过程中。

我看到 VS 2008 的测试版有一个“通用测试”的概念,它可能会做我想做的事,但我们目前无法在那个版本上花钱。我最近开始使用 VS 2008 Pro 版本。

这些测试方法遵循一个熟悉的模式:

  • 为测试做一些设置。
  • 执行测试。
  • 为下一次测试重置。

它们中的每一个都返回一个布尔值(通过/失败)和一个字符串 ref 来表示失败原因,如果失败则填写。

从好的方面来说,至少测试方法是一致的。

今晚我坐在这里,考虑明天早上我可能采取的方法,将所有这些测试代码迁移到测试框架,坦率地说,我对手动钻研超过 8-9K 行测试代码的想法并不那么兴奋进行转换。

你有过进行这种转换的经验吗?你有什么建议吗?我想我可能会因为全局搜索/替换和手动更改测试而苦苦挣扎。

有什么想法吗?

4

2 回答 2

4

如果你使用 NUnit(你应该这样做),你需要为你当前的每个测试方法创建一个新的测试方法。NUnit 使用反射向测试类查询标有该[Test]属性的方法,这是它如何构建显示在 UI 中的测试列表的方式,并且测试类使用 NUnitAssert方法来指示它们是通过还是失败。

在我看来,如果您的测试方法与您所说的一样一致,那么所有这些 NUnit 方法都会如下所示:

[Test]
public void MyTest()
{
   string msg;
   bool result = OldTestClass.MyTest(out msg);
   if (!result)
   {
      Console.WriteLine(msg);
   }
   Assert.AreEqual(result, true);

}

一旦你让它工作,你的下一步是编写一个程序,使用反射来获取旧测试类上的所有测试方法名称,并生成一个 .cs 文件,其中包含每个原始测试方法的 NUnit 方法。

烦人,也许,但不是特别痛苦。你只需要做一次。

于 2008-10-08T00:44:07.473 回答
1

您将经历“一盎司的预防胜于一磅的治疗”的成语。在编程中尤其如此。

你没有提到 NUnit(我认为它是微软在 2008 年购买的,但不要让我这么认为)。您是否有一个特别的原因不只是首先使用 NUnit?

于 2008-10-08T00:37:47.140 回答