如何运行 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 两个套件,每个数据库都有不同的设置。我认为这会起作用,尽管它不是我自己完全熟悉的功能。
我们有一个集成测试套件,其中包含大量执行存储库的测试 类。
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 两个套件,每个数据库都有不同的设置。我认为这会起作用,尽管它不是我自己完全熟悉的功能。