【问题标题】:How to run NUnit onetimesetup multiple times for different databases如何为不同的数据库多次运行 NUnit onetimesetup
【发布时间】:2019-06-01 11:45:36
【问题描述】:

我们有一个集成测试套件,其中包含许多执行存储库类的测试。

目标是在 BaseTestFixture 中有一个 [OneTimeSetup] 方法,它只会在所有测试之前创建/填充每个目标数据库(Postgres/SQL Server)一次,并在所有测试之后拆除。

收到此错误:

nunit OneTimeSetUp:SetUp 和 TearDown 方法不能有参数

我们如何在不重复测试的情况下针对 Postgres、SQL 服务器和两者运行整个测试套件?

谢谢。

【问题讨论】:

    标签: sql-server postgresql nunit integration-testing nunit-3.0


    【解决方案1】:

    有趣的问题。我自己真的想不出一个“开箱即用”的解决方案

    一个简单的解决方法是执行两次单独的控制台运行并使用--params 标志。这样,您可以为每种数据库类型运行不同的设置,具体取决于传入的 TestParameters 值。

    一个更好的选择可能是实现一个自定义属性,它允许您参数化 SetUpFixtures。 (有一个关于添加此功能here 的现有讨论 - 尽管自 2016 年以来它并没有引起太多兴趣。)我认为在不修改 NUnit 的情况下将其作为自定义属性执行是合理的。

    看看SetUpFixtureAttribute是如何实现的。我认为您希望创建自己的 IFixtureBuilder 属性,该属性以类似的方式工作,除了可以参数化,并返回两个套件,每个数据库具有不同的设置。我认为这会起作用,尽管这不是我自己完全熟悉的功能。

    【讨论】:

    • 谢谢,--params 选项效果很好。在使用 ReSharper 测试运行器进行开发期间,我使用了 Resharper 环境变量来传递参数。 jetbrains.com/help/dotcover/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2011-01-18
    • 2021-09-24
    相关资源
    最近更新 更多