NUnit长字符串被截断

时间:2014-04-04 16:48:04

标签: nunit

我正在使用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测试运行器。

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

2 个答案:

答案 0 :(得分:2)

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

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

希望它有所帮助。

答案 1 :(得分:1)

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

我按照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));
    }

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

Assert更改为

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

将结果更改为 Full strings, but not fully visible 这可能不太有用,特别是当工具提示出现时向您显示整个事情。但是,您可以右键单击GUI运行器中的该区域并复制它,确实可以将整个文本复制到剪贴板。

相关问题