我已经为一个软件编写了很多测试(这是一件很棒的事情),但它本质上是作为 C# 中的独立测试构建的。虽然这工作得很好,但它有一些缺点,其中最重要的是它没有使用标准测试框架,最终要求运行测试的人注释掉对不应运行的测试的调用(当不需要运行整个测试“套件”时)。我想将其合并到我的自动化测试流程中。
我看到 VS 2008 的测试版有“通用测试”的概念,它可能会实现我想要的功能,但我们目前无法在该版本上花钱。我最近开始使用 VS 2008 Pro 版本。
这些测试方法遵循熟悉的模式:
- 为测试做一些设置。
- 执行测试。
- 重置以进行下一次测试。
它们每个都返回一个 bool 值(通过/失败)和一个失败原因的字符串引用,如果失败则填写。
好的一面是,至少测试方法是一致的。
今晚我坐在这里,考虑明天早上我可能会采取的方法,将所有这些测试代码迁移到测试框架,坦率地说,我对研究 8-9K 行测试代码的想法并不那么兴奋手动进行转换。
您有过进行此类转换的经验吗?你有什么建议吗?我想我可能会陷入困境,进行全局搜索/替换并手动更改测试。
有什么想法吗?
最佳答案
如果您使用 NUnit(您应该使用 NUnit),则需要为当前的每个测试方法创建一个新的测试方法。 NUnit 使用反射来查询测试类中标有 [Test]
属性的方法,这就是它构建 UI 中显示的测试列表的方式,并且测试类使用 NUnit Assert
方法来指示它们是通过还是失败。
在我看来,如果您的测试方法像您所说的那样一致,那么所有这些 NUnit 方法将如下所示:
[Test]
public void MyTest()
{
string msg;
bool result = OldTestClass.MyTest(out msg);
if (!result)
{
Console.WriteLine(msg);
}
Assert.AreEqual(result, true);
}
一旦你开始工作,你的下一步就是编写一个程序,使用反射来获取旧测试类上的所有测试方法名称,并生成一个 .cs 文件,其中每个原始测试方法都有一个 NUnit 方法测试方法。
也许很烦人,但并不是非常痛苦。而且您只需要执行一次。
关于c# - 将 Homebrew 测试应用程序转换为标准单元测试框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/180935/