背景
我最近尝试为特定应用程序的回归测试开发一套测试。我一直在使用NUnit并没有遇到任何问题。
我遇到了向NUnit测试发送参数的问题,但似乎没有令人满意的答案。
问题
假设我实现了一个加载类的简单单元测试器,按顺序运行Startup,Test和Teardown方法,捕获异常然后卸载程序集。与使用NUnit相比,这样做有什么缺点?
在这种情况下,我可以轻松地将参数传递给我的测试用例,或做任何其他我可能想到的疯狂的事情。但我担心的是我放弃NUnit会失去的东西。
答案 0 :(得分:6)
你输了什么?你的时间。
如果您是为客户或企业工作,他们(大概)会付钱给您解决业务问题,而不是编写基础架构代码。为满足业务需求,可能需要一些基础设施。在这种情况下,它显然不是。你正在重新发明轮子。
不要陷入Not Invented Here陷阱。使用NUnit。它支持parameterized tests。如果NUnit无法满足您的需求,请调查MbUnit or xUnit.net。或者查看SpecFlow等BDD风格。或FitNesse进行验收测试。这只是部分清单!
如果您是出于学习目的自己编写测试框架,那太好了!如果没有,你就是在浪费你的时间和/或你公司的钱。
解决技术问题
JUnit最初是在long airplane trip期间创建的。那时候没有很多选择。编写测试框架并不是一个庞大的项目。编写功能强大且易于使用的强大功能更加困难。编写测试运行器,IDE集成,CI集成,代码覆盖集成等要困难得多。 已经完成了。除非你是Ayende Rahien,否则不要这样做!
除了集成之外,您还会丢失任何未实现的features of NUnit(并且有很多)。我没有使用所有这些,但我确实依赖它们中的许多。
(从我的评论中移出)
答案 1 :(得分:0)
此问题主要分为两个部分:
1)因为这属于“车轮的重新发明”,所以所有优点/缺点都比这个问题相同,而且笼统得多,所有推理都适用于这种情况。
(在1990年代,我遇到了一个写RDBMS的人,因为Oracle数据库和SQL Server 6.5都“无法”执行他想做的事情……这是一个可分页的游标)
2)将参数发送到NUnit测试就像其他任何配置/参数设置任务一样。您可以从您选择的格式(例如:XML,json,RDBMS)中读取配置/参数,并在设置,拆卸和“测试”方法中进行操作。
您可以创建
[TestCaseSource]
或
一些相关属性