【发布时间】:2011-10-02 00:10:31
【问题描述】:
背景
我最近尝试为特定应用程序的回归测试开发一套测试。我一直在使用 NUnit,没有任何问题。
我遇到了向 NUnit 测试发送参数的问题,似乎没有令人满意的答案。
问题
假设我实现了一个简单的单元测试器,它加载一个类,依次运行 Startup、Test 和 Teardown 方法,捕获异常,然后卸载程序集。与使用 NUnit 相比,这样做有什么缺点?
在这种情况下,我可以轻松地将参数传递给我的测试用例,或者做我可能想出的任何其他疯狂的事情。但我担心的是我放弃 NUnit 会失去什么。
【问题讨论】:
-
为什么需要将参数传递给单元测试?听起来你测试的不仅仅是一个单元......
-
测试是远程执行的,并且需要有关谁执行它们的信息以用于记录目的。一个有效的问题,但不幸的是不是我在这里问的。
-
@nathangonzalez 根据您要测试的内容,您可能会遇到需要多次运行相同测试但数据略有不同的情况。参数化测试可以很容易地做到这一点,而无需多次重复基本相同的测试。
-
@nathangonzalez 同意,在为两个目的重用相同的测试时。我正在考虑具有相同目的但需要不同数据的测试。例如,Roman Numerals Kata 通常会产生多个相同的测试(数字 X 转换为字母 Y),参数化测试可以方便地提高可读性并减少容易出错的重复。 (注意:NUnit 将参数化测试作为对每个输入的单独测试运行,因此它非常类似于编写单独的测试。)这就是我想到的那种东西。
-
而且,对于参数化测试,您有两个选择:通过属性提供参数,或使用属性指定另一种方法,该方法将产生所有参数。这使您可以同时拥有可读性和高级功能,并且仍然使用 NUnit。