这让我们中的一些人感到难过。它是VS2013,正如您从图像中看到的那样,代码本身可以正确构建。我们在2台不同的机器上运行此测试,结果相同。
我最初将代码复制/粘贴到MS OneNote中,因此可能存在原因。但正如您在Notepad ++中看到的那样,似乎没有任何特殊字符。
想法?
要对此进行扩展,以下版本也会失败:
//Note: Why this does not pass is baffling
[TestMethod]
public void FunnyTestThatFailsForSomeReason()
{
const string expectedErrorMessage = "Web Session Not Found.";
var a = "Web Session Not Found.";
string b = "Web Session Not Found.";
Assert.AreEqual(expectedErrorMessage, a);
//Assert.AreEqual(expectedErrorMessage, b);
Assert.AreEqual(expectedErrorMessage.ToString(), b.ToString());
}
答案 0 :(得分:2)
您正在使用Assert.AreEqual(Object, Object)
(在这种情况下)正在寻找引用相等性。 It's not going to work the way you want it to
验证两个指定的对象是否相等。如果对象不相等,则断言失败。
使用Assert.AreEqual(String, String, Boolean)
。
验证两个指定的字符串是否相等,忽略大小写或不指定大小写。如果断言不相等,断言就会失败。
或者更简单地说,你的字符串 略有不同。复制和粘贴似乎产生了不同的结果:
答案 1 :(得分:0)
(这里出于格式化目的;现有的答案也解释了发生了什么。这只是你问题代码的十六进制转储。)
00000000: 2020 2020 7661 7220 6120 3d20 2257 6562 c2a0 5365 7373 696f : var a = "Web..Sessio
00000018: 6ec2 a04e 6f74 c2a0 466f 756e 642e 223b 0a20 2020 2020 2020 :n..Not..Found.";.
00000030: 2020 2020 2073 7472 696e 6720 6220 3d20 2257 6562 2053 6573 : string b = "Web Ses
00000048: 7369 6f6e 204e 6f74 2046 6f75 6e64 2e22 3b0a :sion Not Found.";.
字符串不一样。