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