我有一些NUnit测试,它使用TestCaseSource函数。不幸的是,我所需要的TestCaseSource函数需要很长的时间来初始化,因为它递归地扫描文件夹树,以找到将传递给测试函数的所有测试映像。(或者,它可以在每次运行时从文件列表XML加载,但是自动发现新的图像文件仍然是必需的。)
是否可以与NUnit一起指定TestCaseSource属性,以便在用户单击节点或运行测试套件之前,NUnit不会枚举测试用例(不调用TestCaseSource函数)?
需要获取存储在文件夹中的所有测试映像是项目要求,因为其他无法访问测试项目的人员将需要向文件夹中添加新的测试映像,而不必修改测试项目的源代码。然后,他们将能够查看测试结果。
一些教条式的单元测试人员可能会反驳说,我正在使用NUnit来做一些它不应该做的事情。我不得不承认,我必须满足一个需求,而NUnit是一个非常好的工具,它有一个很好的GUI,能够满足我的大部分需求,所以我不在乎它是否是正确的单元测试。
附加信息(来自NUnit文档)
关于对象构造的
注记
NUnit在加载测试时定位测试用例,创建具有非静态源的每个类的实例,并构建要执行的测试列表。每个源对象此时只创建一次,并在加载所有测试后销毁。
如果数据源位于测试夹具本身,则使用TestFixtureAttribute上提供的夹具参数的适当构造函数创建对象,如果没有指定参数,则使用默认构造函数创建对象。由于该对象是在测试运行之前销毁的,因此这两个阶段之间或不同运行之间的通信是不可能的,除非通过参数本身。
预先加载测试用例的目的似乎是避免TestCaseSource和测试执行之间的通信(或副作用)。这是真的吗?这是要求预先加载测试用例的唯一原因吗?
注:
需要修改NUnit,如http://blog.sponholtz.com/2012/02/late-binded-parameterized-tests-in.html中所记录的那样
有计划将此选项引入到NUnit的较晚版本中。
发布于 2011-04-29 17:07:12
我不知道在GUI中延迟加载测试名称的方法。我的建议是将这些测试移到一个单独的程序集中。这样,您可以快速运行所有其他测试,并且只在需要时加载较慢的穷举测试。
https://stackoverflow.com/questions/5828125
复制相似问题