imo*_*ama 5 nunit unit-testing nunit-2.5
我有兴趣能够通过静态方法或返回IEnumerable的属性在运行时传递给它的构造函数参数来实例化多个testfixtures.
在Nunit 2.5中,他们引入了参数化测试和测试夹具.这些允许您编写单个测试并使用TestCase属性提供的几个输入运行它,并编写单个测试类并分别使用不同的构造函数参数实例化它的多个实例.
除此之外,还可以使用TestCaseSource属性基于属性或方法的输出创建多个测试用例.这将使用实现IEnumerable的方法/属性的输出来创建一组测试用例,列表中每个对象一个.这是我希望能够做到的,但是在夹具级别而不是测试级别.
关于我的用例的一些背景知识:
我正在测试模拟软件,以及必须在任何模拟运行之前加载的"模拟环境"(来自序列化对象).大约有5种不同类型的sim,所以我的测试类有5种测试方法(每种类型的sim都有一种).我目前正在使用继承(而不是参数化装置)来运行几个(大约六个)仿真环境下的测试用例,这些仿真环境取自生产数据.
我的麻烦源于这样一个事实:在最近尝试增加代码覆盖率时,我们自动生成了所有可能的仿真组件组合,从而产生了100多个sim环境.我不想为每个这些创建继承类,所以我使用TestCaseSource,其属性返回文件夹中的所有工作空间,并修改测试,以便他们(重新)加载测试本身的sim环境每个测试用例.
理想情况下,我希望每个仿真环境都有一个夹具,并确定它们在运行时的数量/数量.我知道我可以通过将sim环境路径硬编码为100多个TestFixture属性来完成前者,我可以做后者吗?
我通过电子邮件发送了Nunit-Discuss列表,并得到了Charlie Poole的回复.简而言之,这还不可能,但正在考虑Nunit的未来版本.
嗨,
简单地说,你想要的是什么,但它还没有到来.参数化的灯具(正如您所发现的那样)受限于您只能使用属性中允许的参数这一事实.我们希望有一种方法允许使用属性和方法作为测试用例,但是夹具有点复杂,因为类型可能是通用的.
您是否考虑过使用通用夹具作为解决方法?您可以将环境作为Type(或Types)和任何构造函数参数作为非类型参数传递.我不知道你的应用程序,所以带上一粒盐,但是怎么样......
Run Code Online (Sandbox Code Playgroud)[TestFixture(typeof(Environment1), 42, "string")] public class TestClass<T> { IEnvironment env; public TestClass(int n, string s) { env = new T( n, s); } ... }请注意,这是"maillistcode",因此可能无效.:-)
查理
| 归档时间: |
|
| 查看次数: |
4172 次 |
| 最近记录: |