【问题标题】:C# integration test run per connection string每个连接字符串运行 C# 集成测试
【发布时间】:2012-11-16 19:16:15
【问题描述】:

我们有一个使用实体代码优先的应用程序,并且我们添加了 Devart for Oracle 支持。我们有一系列通过 Visual Studio 测试运行程序运行的集成测试,涵盖种子数据测试。我们希望能够在测试执行时为 SQL Server 和 Oracle 运行这些测试。有没有人有好的角度来解决这个问题?

【问题讨论】:

  • 运行测试两次。每种类型一次。
  • 希望有一些更懒惰和自动化的东西。测试集将不断扩大,我们不想增加指数维护。如果您知道一个可以满足我们需求的自动化的简单程序。另请注意:这些测试是在门控签到时运行的。
  • 我认为您无法理解的是这些应该被视为两个单独的测试。您正在测试两个独立的平台——即使它们正在执行相同的操作。在构建级别自动执行此操作 - 只需运行套件两次 - 每次运行都使用单独的数据库目标。
  • 我知道这是两个测试运行。我的问题更侧重于如何自动化这两次运行。必须为两个连接字符串运行此自动化,我不知道如何在 TFS 中进行设置。我正在寻找设置步骤或我应该遵循的方向来弄清楚如何找到我需要的步骤。我们的员工中没有任何人具有 Visual Studio 测试运行器或 TFS 自动化方面的经验。感谢您的回复。
  • @JamieYoung - 您应该将该评论作为问题的一部分或新问题。

标签: c# sql-server oracle integration-testing devart


【解决方案1】:

好吧,如果你想要不同的环境设置,但仍然只编写一次测试但运行多次,Data Driven test 怎么样?

您可以使用[DataSource] 属性来装饰您的测试。数据源本身可以是 excel 文件、CSV 等,该文件可以保存连接字符串以及其他相关信息,以便配置环境。

在每次测试运行中,您将拥有一个代表您的环境数据的 DataRow。

如果您也使用 NUnit,使用 [ValueSource] 属性,并提供来自某个存储位置、文件、类返回值的静态方法等的数据,也可以实现同样的效果。

使用这些设置中的任何一个,测试实际上会运行多次,因此每个环境都可以单独失败或通过。

这也是一个非常好的方法来测试一个逻辑,但具有不同的场景和预期的输出。您可以在外部数据源中拥有输入和预期输出,并让测试框架在所有场景中运行,并确保它们仍然按预期工作。这可能有助于对您想要检查的金融算法等可能已知的结果或 excel 中的相同算法进行黑盒测试,例如,在您有数百个场景要比较的情况下。

这显然不是说你不应该为孤立的类编写实际的单元测试,它只是添加到工具箱中的另一个工具。

【讨论】:

【解决方案2】:

您可以从配置文件中读取连接字符串和其他设置信息。

为每个数据库/设置创建一个配置文件。

制作一个命令文件,每次配置执行两次测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多