我们有一个集成测试套件,其中包含许多执行存储库类的测试。
目标是在BaseTestFixture中具有一个[OneTimeSetup]方法,该方法将在所有测试之前仅创建/填充每个目标数据库(Postgres / SQL Server)一次,并在所有测试之后进行拆除。
收到此错误:
nunit OneTimeSetUp:SetUp和TearDown方法必须没有参数
如何在不重复测试的情况下针对Postgres,SQL Server和两者运行整个测试套件?
谢谢。
答案 0 :(得分:0)
有趣的问题。我自己真的想不出一个“开箱即用”的解决方案
一个简单的解决方法是进行两次单独的控制台运行,并使用--params
标志。这样,您可以根据传入的TestParameters
值为每种数据库类型运行不同的设置。
一个更好的选择是实现自定义属性,该属性允许您参数化SetUpFixtures。 (尽管自2016年以来并未引起人们的广泛关注,但有关添加此功能here的讨论仍在进行中。)我认为可以将其作为自定义属性而不用修改NUnit就可以了。
看看如何实现SetUpFixtureAttribute。我认为您想创建自己的IFixtureBuilder
属性,该属性的工作方式类似,但可以对其进行参数化,并返回两个套件,每个数据库的设置都不同。我认为这行得通,尽管它不是我完全不熟悉的功能。