有没有办法给nUnit一个测试层次结构,这样如果之前的测试失败,以后的测试就不会运行?
假设我有一组预期会被处理和排序的数据,并且我有一个测试订单已完成的UT,还有一些测试处理的其他测试,并假设订购如果这是假的,那么它就会成功并且会因为虚假而失败。
(并且假设打破这种依赖性是不可行的 - 我知道这是理想的解决方案!)
然后告诉nUnit会很高兴..."如果订购测试失败了,那么就不要打扰这些(不确定,可能吗?)'因为我们知道他们不会工作。 "
显然我可以手动完成,但是这会给测试添加很多基本上无关紧要的东西(我们有很好的短测试,所以"调用头部测试并捕获异常&#34 ; block会使某些测试的长度翻倍)
我希望nUnit可能已经JustDoThis,但我无法在任何地方看到它?
答案 0 :(得分:6)
正如你的问题中提到的,最适合的'修复是打破测试之间的依赖关系。如果你真的想这样做,NUnit确实支持假设(有点像断言,但是在测试开始时),这可以用来检查影响测试有效性的一些前提条件。正在搜索" NUnit假设"提出了以下StackOverflow问题,看起来与此类似:How do I ignore a test based on another test in NUnit?
答案 1 :(得分:1)
我认为单元测试中的层次结构是一个坏主意。如你所说,你的单元测试很小,很好,独立。它应该保持不变。添加一些依赖项会破坏它。
为了提供一些解决方法,我建议使用Category属性和/ stoponerror选项。您可以按其重要性对测试进行分组,并按此类别运行。并且使用stoponerror选项将在第一次失败时停止执行其余测试。我不确定这是否也可以与Visual Studio集成,但您可以使用NUnit命令行工具实现此目的。见this