2014-09-19 72 views
4

有没有办法给nUnit一个测试层次结构,以便以后的测试不会在早期测试失败时运行?nUnit测试相互依赖性/层次结构

假设我有一组数据需要处理和排序,我有一个测试排序完成的UT,还有一些其他的测试,测试处理和假设订购已经成功,因此如果这是错误的,将会虚假地失败。

(并假设打破这种依赖是不可行的! - 我知道这是理想的解决方案)

然后,它会很高兴地告诉NUnit的......“如果排序测试失败,那么甚至不打扰这些(不确定,也许?)因为我们知道他们不会工作。“

很明显,我可以手动完成,但是这会给测试增加很多基本上不相关的东西(我们有很好的短测试,所以“调用头测试并捕获异常”块将会增加一些长度测试)

我希望nUnit可能JustDoThis已经,但我不能在任何地方看到它?

+0

可能重复[如何忽略基于NUnit的另一个测试的测试?](http://stackoverflow.com/questions/1782496/how-do-i-ignore-a-test-based-another-test-in-nunit) – 2014-09-19 14:32:08

回答

6

正如您的问题所述,最“适当的”修复方法是打破测试之间的依赖关系。如果你真的想这样做,NUnit确实支持假设(有点像断言,但是在你的测试开始时),它可以用来检查影响你的测试的有效性的一些先决条件。搜索“NUnit假设”带来了以下StackOverflow问题,看起来类似于这个:How do I ignore a test based on another test in NUnit?

+0

完美...谢谢! – Brondahl 2014-09-19 14:05:13

1

我认为单元测试的层次结构是一个坏主意。正如你所说的,你的单元测试很小,很好,当然也是独立的。它应该保持不变。添加一些依赖关系可以打破它。

为了提供一些解决方法,我建议使用Category属性与/ stoponerror选项结合使用。您可以按照其重要性对测试进行分组,并按照这些类别运行它。并且使用stoponerror选项将在第一次失败时停止执行其余的测试。我不确定这是否也适用于与Visual Studio集成,但您可以使用NUnit命令行工具来实现此目的。请参阅this

+0

但是在这种情况下,我们不是*添加*依赖项......我们只是突出显示现有的依赖关系。 不过,在某些情况下,类别方法似乎是接受答案的一个很好的选择。 – Brondahl 2014-09-19 14:06:00