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