【发布时间】:2010-05-17 09:25:04
【问题描述】:
我在 NUnit 下编写了单元测试,这些测试使用具有不同参数的 TestFixture。现在,当我运行测试时,我想查看哪些参数测试已通过,哪些未通过。不幸的是,ReSharper 只显示“测试失败:子测试失败”,没有更多信息。有什么方法可以查看哪些参数导致测试失败?
谢谢!
【问题讨论】:
我在 NUnit 下编写了单元测试,这些测试使用具有不同参数的 TestFixture。现在,当我运行测试时,我想查看哪些参数测试已通过,哪些未通过。不幸的是,ReSharper 只显示“测试失败:子测试失败”,没有更多信息。有什么方法可以查看哪些参数导致测试失败?
谢谢!
【问题讨论】:
我就此向 JetBrains 发送了电子邮件,并于 2010 年 7 月 9 日收到了 Andrey Serebryansky 的以下回复:
此问题将在下一个 ReSharper 版本中解决。
我相信撰写本文时的当前版本是 5.1。
基于 @Damien McGivern 和 @zcrar70 的 cmets
问题是here,它已在 Resharper 内部构建中修复。
但是根据 Victor Kropp(在上面的链接):
由于技术原因,这些更改不会包含在 5.1 中。
当被问及发布日期是什么时候(截至 2010 年 8 月 3 日):
很抱歉,我们的路线图尚未确定。我真的不知道。
来自 Victor Kropp 的更多答案:
问。是否有任何关于何时发布或每晚构建我们可以使用的时间线的更新?
A. ReSharper 6.0 EAP 预计将在年底前启动。我现在不知道实际日期。
问。 6.0 之前的任何版本都会提供此错误修复吗?
A.不,对不起。
我刚刚使用 Resharper 6 EAP(内部版本 2101)对此进行了测试,看起来他们在解决此问题方面做得相当不错。
我还没有玩太多,但到目前为止我喜欢我所看到的。
【讨论】:
我假设你在谈论TestCaseAttribute,对于这样的测试:
[TestCase(true, Description = "When true")]
[TestCase(false, Description = "When false")]
[Test]
public void SomeTest(bool parameter) { . . . }
我在这种情况下使用描述属性。使用 description 属性,它将告诉您哪个测试用例失败。如果你对情况的描述足够好,它应该是自我记录的。
【讨论】:
您使用的是什么版本的 ReSharper?
更新:
我做了一些研究,我认为 Resharper 4.X 不支持 TestCase 属性。
显然它将在 R# 5.X 中得到支持。
与此同时,有一个名为 Gallio 的 ReSharper 插件可能会有所帮助。
从这里获得 SO 问题的信息 -> ReSharper Unit Test Runner - TestCase
【讨论】:
取决于它是如何失败的。在您的 Assert 中,最后一个参数是一个可选字符串,您可以在其中放置失败信息。
例如:Assert.IsTrue(false, "Because I'm silly");
当您的测试失败时,它会立即显示您的消息。
同样,您可以使用 Console.Write 进行测试输出。如果您不捕获和浪费异常,还应该有一个调用堆栈来描述测试失败的位置。
【讨论】: