我有兴趣能够通过静态方法或返回 IEnumerable 的属性在运行时传递给它的构造函数参数来实例化多个测试装置。
在 Nunit 2.5 中,他们引入了参数化测试和测试夹具。这些允许您编写单个测试并使用使用 TestCase 属性提供的多个输入运行它,并编写单个测试类并分别使用不同的构造函数参数实例化它的多个实例。
除此之外,可以使用 TestCaseSource 属性基于属性或方法的输出创建多个测试用例。这将使用实现 IEnumerable 的方法/属性的输出来创建一组测试用例,列表中的每个对象一个。这是我希望能够做的,但在夹具级别而不是测试级别。
我的用例的一些背景:
我正在测试模拟软件,以及在运行任何模拟之前必须加载(从序列化对象)的“模拟环境”。大约有 5 种不同类型的 sim,所以我的测试类有 5 种测试方法(每种类型的 sim 一种)。我目前正在使用继承(而不是参数化的装置)在几个(大约六个)模拟环境下运行测试用例,这些模拟环境是从生产数据中获取的。
我的麻烦来自这样一个事实,即在最近一次增加代码覆盖率的尝试中,我们自动生成了所有可能的模拟组件组合,从而产生了 100 多个模拟环境。我不想为每一个创建继承的类,所以我使用 TestCaseSource 的属性返回文件夹中的所有工作区,并修改测试,以便它们(重新)加载测试本身中的 sim 环境每个测试用例。
理想情况下,我希望每个模拟环境有一个夹具,并确定它们在运行时有多少/什么。我知道我可以通过将 sim 环境路径硬编码为 100 多个 TestFixture 属性来完成前者,我可以做后者吗?