NUnit Assert AreEqual字符串diff

时间:2017-06-29 19:16:45

标签: c# .net nunit nunit-3.0

我正在为代码生成器编写单元测试,我的大多数测试都将跨越多行的输出与一些黄金输出进行比较。目前,我正在将输出与Assert.AreEqual(string, string)进行比较,显示第一个差异的上下文。

不幸的是,这不是很有帮助。理想情况下,我想得到输出的差异。 这样做的最佳方法是什么?我目前的计划是将生成的代码写入文件并调用DIFFTOOL env var引用的可执行文件(否则为diff.exe PATH,否则为默认的NUnit行为)并使用适当的消息调用Assert.Fail()

1 个答案:

答案 0 :(得分:4)

通过将.NoClip指定为EqualConstraint的修饰符,可以消除长字符串的裁剪。这要求您从遗留Assert.AreEqual切换到使用断言的约束模型:

C# Assert.That(actual, Is.EqualTo(expected).NoClip);

这将为您提供两个字符串的完整值,但如果不重新格式化,可能很难阅读。

我们长期以来一直有兴趣改善两个长串之间差异的显示。来做公关吧! : - )