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