C# 在Visual Studio中断言失败后比较字符串

C# 在Visual Studio中断言失败后比较字符串,c#,visual-studio,C#,Visual Studio,我编写了一个用于序列化XML文件的单元测试。看起来是这样的: [TestMethod] public void TestDeserialize() { var appValue = Persister.ReadFromXml("before.xml"); Persister.WriteToXml(appValue, "after.xml"); var before = File.ReadAllText("before.xml"); var after = Fil

我编写了一个用于序列化XML文件的单元测试。看起来是这样的:

[TestMethod]
public void TestDeserialize()
{
    var appValue = Persister.ReadFromXml("before.xml");
    Persister.WriteToXml(appValue, "after.xml");

    var before = File.ReadAllText("before.xml");
    var after = File.ReadAllText("after.xml");
    Assert.AreEqual(before, after);
}
测试失败了。因此,我在Visual Studio 2015的左下角有一个小窗口,上面写着:

消息:“Assert.AreEqual”处出错。预期:实际:

在Eclipse或IntelliJ中,当我双击测试失败时,预期值和实际值将在diff编辑器中打开,以便我可以快速看到它们的不同之处


VisualStudio是否提供了类似的功能,或者我是否必须将文本复制到剪贴板并手动提取预期值和实际值,然后在文本编辑器中进行比较?XML文本非常长,因此我想从IDE获得一些帮助。

为了使用C#比较两个字符串,我建议使用
String.Equals
方法

public void TestDeserialize()
{
    var appValue = Persister.ReadFromXml("before.xml");
    Persister.WriteToXml(appValue, "after.xml");

    var before = File.ReadAllText("before.xml");
    var after = File.ReadAllText("after.xml");
    bool before_equals_after = before.Equals(after, StringComparison.OrdinalIgnoreCase);
}
有关测试其他对象类型之间的相等性,请参见
IComparable

为了使用C#比较两个字符串,我建议使用
String.Equals
方法

public void TestDeserialize()
{
    var appValue = Persister.ReadFromXml("before.xml");
    Persister.WriteToXml(appValue, "after.xml");

    var before = File.ReadAllText("before.xml");
    var after = File.ReadAllText("after.xml");
    bool before_equals_after = before.Equals(after, StringComparison.OrdinalIgnoreCase);
}
有关测试其他对象类型之间的相等性,请参见
IComparable

如果我理解你的意思,人们通常称之为“差异化工具”,而不是“比较编辑器”。(我在两个IDE中都没有使用过这个功能。)对于独立于IDE的方法,如果在即时窗口中调用方法,您可以创建自己的方法,该方法知道如何将两个字符串发送到用户的diffing工具。类似于
assertResult.OpenTool()
,它调用VS的合并工具,或者kdiff3,或者其他任何东西。这会有帮助吗?Xunit.net有更好的断言失败消息,我确信它指出了消息中的第一个地方是字符差异——不完美,但更好:)如果我理解你,人们通常称它为“差异工具”,而不是“比较编辑器”。(我在两个IDE中都没有使用过这个功能。)对于独立于IDE的方法,如果在即时窗口中调用方法,您可以创建自己的方法,该方法知道如何将两个字符串发送到用户的diffing工具。类似于
assertResult.OpenTool()
,它调用VS的合并工具,或者kdiff3,或者其他任何东西。这会有帮助吗?Xunit.net有更好的断言失败消息,我确信它指出了消息中的第一个地方是字符差异——不完美,但更好:)我知道如何比较字符串。我的问题的目的只是抱怨Microsoft Visual Studio内置的糟糕的单元测试支持。我知道如何比较字符串。我的问题的目的只是抱怨Microsoft Visual Studio内置的糟糕的单元测试支持。