我正在为代码生成器编写单元测试,我的大多数测试都将跨越多行的输出与一些黄金输出进行比较。目前,我正在将输出与Assert.AreEqual(string, string)
进行比较,显示第一个差异的上下文。
不幸的是,这不是很有帮助。理想情况下,我想得到输出的差异。 这样做的最佳方法是什么?我目前的计划是将生成的代码写入文件并调用DIFFTOOL
env var引用的可执行文件(否则为diff.exe
PATH
,否则为默认的NUnit行为)并使用适当的消息调用Assert.Fail()
。
答案 0 :(得分:4)
通过将.NoClip
指定为EqualConstraint
的修饰符,可以消除长字符串的裁剪。这要求您从遗留Assert.AreEqual
切换到使用断言的约束模型:
C#
Assert.That(actual, Is.EqualTo(expected).NoClip);
这将为您提供两个字符串的完整值,但如果不重新格式化,可能很难阅读。
我们长期以来一直有兴趣改善两个长串之间差异的显示。来做公关吧! : - )