【问题标题】:NUnit long string gets truncatedNUnit 长字符串被截断
【发布时间】:2014-04-04 16:48:04
【问题描述】:

我正在使用 NUnit 为知道如何将自身序列化为 XML 的类编写测试。该类有很多属性,所以我正在测试的函数生成的 XML 片段可能很长,即使是新对象的默认状态。

当我在 NUnit 测试运行程序中运行测试并且我故意破坏了预期返回的 XML 时,测试运行程序仅显示从将对象序列化为 XML 的函数返回的预期和实际字符串的截断版本。如:

MyProject.MyTests.CanCreateObjectAndEdit:
  Expected string length 525 but was 1485. Strings differ at index 509.
  Expected: "...ffer="False" IsThing="False" /></MyObject>"
  But was:  "...ffer="False" IsThing="False" /><MySubObject ItemID="60..."
  --------------------------------------------^

有没有办法让 NUnit 返回 整个 预期和实际的字符串?我有 NUnit 2.6.3(最新版本),我正在使用 NUnit x86 GUI 测试运行器。

我目前的解决方法是创建一个控制台应用程序,将代码从测试中复制出来,运行它并将输出打印到调试窗口,然后将该输出粘贴回我的测试中。

【问题讨论】:

    标签: nunit


    【解决方案1】:

    几乎每个 Assertion 方法(即 Assert.AreEquals)都将“消息”参数作为第三个参数。

    它仅在测试失败时打印,旨在提供有用的信息来诊断测试失败。我认为这正是您所需要的。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      (对于以下代码中的任何转录错误,我深表歉意:我在没有复制/粘贴的情况下在远程计算机上进行了测试)

      我按照 Manuel 的建议测试了 message 参数。

          [Test]
          public void LongTest()
          {
              string s1 = new string('.', 1000);
              string s1 = new string('.', 500) + "+" + new string('.', 500);
              Assert.That(s1, Is.EqualTo(s2));
          }
      

      并得到与问题中的结果相同的结果:

      Assert 更改为

              Assert.That(s1, Is.EqualTo(s2), s1 + "\r\n\r\n" + s2);
      

      将结果更改为 这可能没什么用,尤其是当工具提示出现时,会向您展示整个事情。但是,您可以在 GUI 运行器中右键单击该区域并复制它,您确实可以将整个文本复制到剪贴板。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-13
        相关资源
        最近更新 更多