【发布时间】:2015-11-30 05:57:52
【问题描述】:
我有一个包含所有程序集的文件夹,这些程序集都包含某个接口的实现(在每个程序集中不同)。我已经为该接口编写了一些单元测试,并希望自动执行在每个实现上运行接口测试的任务。
我有一个我不喜欢的可行解决方案:
在实际测试类中编写代码以加载(程序集)和实例化实现,将它们存储在列表中。
编写每个测试以遍历实现列表,在每个测试上运行其断言。
我想要的是在一个实现上运行所有测试,然后继续下一个以再次运行所有测试,依此类推。我的想法是找到一种方法(以编程方式):
- 加载程序集并实例化实现 - 像以前一样,但不在测试类中。
- 创建测试类的实例,注入下一个实现。
- 运行测试。
- 继续下一个实施,重复该过程。
(我意识到我可能会在文件系统中对文件进行混洗 - 比如将程序集放在一个位置 > 运行加载 one 实现的测试 > 用下一个实现替换程序集,并且然后重复这个过程。不过,如果可能的话,我想要一些不那么粗糙的东西。)
我一直在寻找 nUnit 测试运行器(控制台等)的捷径,但到目前为止没有找到。有谁知道是否有一种方法可以使用 nUnit 或任何其他可以以编程方式控制的测试套件来实现我想要的?或者也许还有另一种方法可以满足上述“我想要的”标准?
【问题讨论】:
-
您可能需要考虑使用
TestCaseSource属性来提供您要测试的类的类型/实例。您需要加载程序集等,但 NUnit 会为您处理其余的管道。 nunit.org/index.php?p=testCaseSource&r=2.5.9 -
TestCaseSource是一个选项,我同意,但不会实现为一个实现运行每个测试,然后继续下一个实现,重复该过程的目标 .由于未能通过实施IAddin和ISuiteBuilder获得好的解决方案,我目前正在研究看起来很有希望的SuiteAttribute。
标签: c# .net unit-testing dependency-injection nunit