如何运行 NUnit onetime setup multiple time for different databases

How to run NUnit onetimesetup multiple times for different databases

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

objective 是在 BaseTestFixture 中有一个 [OneTimeSetup] 方法,它将 create/populate 每个目标数据库(Postgres/SQL 服务器)在所有测试和拆卸之前只执行一次测试。

遇到这个错误:

nunit OneTimeSetUp: SetUp and TearDown methods must not have parameters

我们如何 运行 针对 Postgres 的整个测试套件,SQL 服务器以及两者都不需要重复测试?

谢谢。

有趣的问题。我自己真的想不出 'out-the-box' 解决方案

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

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

看看 SetUpFixtureAttribute 是如何实现的。我想你会想要创建你自己的 IFixtureBuilder 属性,它以类似的方式工作,除了可以参数化,和 return 两个套件,每个数据库都有不同的设置。我认为这会起作用,尽管它不是我自己完全熟悉的功能。