【问题标题】:NUnit+ReSharper: How to view results for TestFixture with different parameters?NUnit+ReSharper:如何查看具有不同参数的 TestFixture 的结果?
【发布时间】:2010-05-17 09:25:04
【问题描述】:

我在 NUnit 下编写了单元测试,这些测试使用具有不同参数的 TestFixture。现在,当我运行测试时,我想查看哪些参数测试已通过,哪些未通过。不幸的是,ReSharper 只显示“测试失败:子测试失败”,没有更多信息。有什么方法可以查看哪些参数导致测试失败?

谢谢!

【问题讨论】:

    标签: c# nunit resharper


    【解决方案1】:

    我就此向 JetBrains 发送了电子邮件,并于 2010 年 7 月 9 日收到了 Andrey Serebryansky 的以下回复:

    此问题将在下一个 ReSharper 版本中解决。

    我相信撰写本文时的当前版本是 5.1。


    编辑:

    基于 @Damien McGivern 和 @zcrar70 的 cmets

    问题是here,它已在 Resharper 内部构建中修复。

    但是根据 Victor Kropp(在上面的链接):

    由于技术原因,这些更改不会包含在 5.1 中。

    当被问及发布日期是什么时候(截至 2010 年 8 月 3 日):

    很抱歉,我们的路线图尚未确定。我真的不知道。

    编辑2:

    来自 Victor Kropp 的更多答案:

    问。是否有任何关于何时发布或每晚构建我们可以使用的时间线的更新?

    A. ReSharper 6.0 EAP 预计将在年底前启动。我现在不知道实际日期。

    问。 6.0 之前的任何版本都会提供此错误修复吗?

    A.不,对不起。

    EDIT3:

    我刚刚使用 Resharper 6 EAP(内部版本 2101)对此进行了测试,看起来他们在解决此问题方面做得相当不错。

    我还没有玩太多,但到目前为止我喜欢我所看到的。

    【讨论】:

    【解决方案2】:

    我假设你在谈论TestCaseAttribute,对于这样的测试:

    [TestCase(true, Description = "When true")]
    [TestCase(false, Description = "When false")]
    [Test]
    public void SomeTest(bool parameter) { . . . }
    

    我在这种情况下使用描述属性。使用 description 属性,它将告诉您哪个测试用例失败。如果你对情况的描述足够好,它应该是自我记录的。

    【讨论】:

    • 尝试了您的解决方案 - 仍然遇到同样的问题。 ReSharper 唯一能说的是“测试失败:子测试失败”。您能否提供此测试的 ReSharper 单元测试会话窗口输出的简单代码和屏幕截图?
    • 这不再适合我。它在某个时候奏效了。对此感到抱歉。
    【解决方案3】:

    您使用的是什么版本的 ReSharper?

    更新:
    我做了一些研究,我认为 Resharper 4.X 不支持 TestCase 属性。

    显然它将在 R# 5.X 中得到支持。

    与此同时,有一个名为 Gallio 的 ReSharper 插件可能会有所帮助。

    从这里获得 SO 问题的信息 -> ReSharper Unit Test Runner - TestCase

    【讨论】:

    • 我认为您误解了这个问题。我知道如何使用断言等。问题是 ReSharper 没有显示哪个 TestCase 失败了。它只显示 其中一个 TestCases 失败了。
    • 是的,没有问题 - 这就是我想要澄清的。因此,您希望 Resharper 在您的测试运行后获取一些元数据。请参阅我的新答案:TestCase 属性和 ReSharper
    • 我使用的是 ReSharper 5.0,但那里不支持此功能。希望 JetBrains 能够解决这个问题,并在未来的版本中改进他们的测试运行器。
    【解决方案4】:

    取决于它是如何失败的。在您的 Assert 中,最后一个参数是一个可选字符串,您可以在其中放置失败信息。 例如:Assert.IsTrue(false, "Because I'm silly");

    当您的测试失败时,它会立即显示您的消息。

    同样,您可以使用 Console.Write 进行测试输出。如果您不捕获和浪费异常,还应该有一个调用堆栈来描述测试失败的位置。

    【讨论】:

    • 问题在于 Resharper 没有显示哪个参数化测试失败。在断言中放入错误消息并不会改变这一点(我确实检查过。)
    • 哦,我明白了。在这种情况下,您总是可以使用反射在运行时吐出信息..虽然这有点远>_>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多