如何为不同的数据库多次运行NUnit onetimesetup

时间:2019-06-01 11:45:37

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

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

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

收到此错误:

  

nunit OneTimeSetUp:SetUp和TearDown方法必须没有参数

如何在不重复测试的情况下针对Postgres,SQL Server和两者运行整个测试套件?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

一个更好的选择是实现自定义属性,该属性允许您参数化SetUpFixtures。 (尽管自2016年以来并未引起人们的广泛关注,但有关添加此功能here的讨论仍在进行中。)我认为可以将其作为自定义属性而不用修改NUnit就可以了。

看看如何实现SetUpFixtureAttribute。我认为您想创建自己的IFixtureBuilder属性,该属性的工作方式类似,但可以对其进行参数化,并返回两个套件,每个数据库的设置都不同。我认为这行得通,尽管它不是我完全不熟悉的功能。