c# - 将 Homebrew 测试应用程序转换为标准单元测试框架

标签 c# unit-testing automated-tests homebrew

我已经为一个软件编写了很多测试(这是一件很棒的事情),但它本质上是作为 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/

相关文章:

c# - 将泛型转换为接口(interface)类型约束

c# - 更改 DataContext 并绑定(bind) ItemsSource 和 SelectedItem 时 WPF 中 ComboBox 的奇怪行为(或错误?)

c# - 如何为文本框提示横幅添加背景

c# - 如何使用 Sql CE 4 数据库进行功能测试

python - 使用缓存装饰器在 Python 中运行单元测试

unit-testing - 如何通过模拟依赖关系来测试微服务?

regex - 扩展 Cucumber 步骤

c# - 确定用作方法参数的变量的名称

python - 覆盖单元测试中的python函数局部变量

python - 使用 python 脚本在命令提示符中运行命令