我有以下測試似乎產生相同的字符串,但Assert.AreEqual失敗。Assert.AreEqual失敗,即使預期和實際相同
[TestMethod]
public void Decompressed_test_should_equal_to_text_before_compression()
{
TextCompressor compressor = new TextCompressor();
Random r = new Random((int)DateTime.Now.Ticks);
for (int i = 500; i < 1500; i++)
{
char[] testArray = new char[i];
for (int j = 0; j < i; j++)
{
char randomChar = (char)(r.Next(256, 65536));
testArray[j] = randomChar;
}
string testString = new String(testArray);
string compressed = compressor.Compress(testString);
string decompressed = compressor.Decompress(compressed);
Assert.AreEqual(testString.Length, decompressed.Length);
Assert.AreEqual(testString, decompressed, false, CultureInfo.InvariantCulture);
}
}
compressor.Compress and compressor.Decompress使用GZipStream進行一些壓縮和解壓縮。
它通過,如果我嘗試(65,90),而不是(256,65536),所以我猜測它與unicode有關。我嘗試過CurrentCulture,根本沒有文化,而不是InvariantCulture,它仍然失敗。但由此產生的字符串似乎是相同的:
Assert.AreEqual失敗。
預計:
<☔ฺ疉鎷얚跨꿌潙얫嘹֨ز항們嵜浮䑹شم靄斳薃픢萁⯬쫎ʛ⫕蝺ꄗ穌넢뇌䶆멊큀퉆䐫̥괊⑆놸僥̅ᵀ㣚ꢅ뺓䇚녚伀讍홬䈕캾撏Ჴ孢黮摠뮡䌦윃ᬳ狚䆙툾훶䏤ꛈṻ⟧㉖鮸蒵萗냤퇅서㪨瀲鰪殘䓴ۇ넃櫜㑦䢻쮓죣䕱䶘㴝姳뿝嘼ᷨ㗬꺬櫣涷꠶滸껅က㷕䩉毎覛⧹䮯嬇힚艐Ὑ쇕횻鸙蹻硐䈆쓖⸛錼鰙ኰ乒⺴썓힠䵓ꅄⵈ桃悵㾈枟⏠ه폫ا琖ퟰ乼쩐鑈푷᫇蕱늛쭡䙠ⲓᒇꪮ툅⃑ꦴ돻♹ᢋ麝熪뚭Ћ䌚娯鈕⡃㪿ㅞ⤩㥍車䎘磛蚾ㅸ擫떦蝳分鰽䠺ꭍ튘폻⥽ⳉ歷驛똮⯴⋟Ḋ룴墭䐣앾郢ᵸᮄ杗奪硼佑烑鄗䳘핬溴墽炁ࣘヲ栥풼ಃ鬥狹就쵎嬒瀃碂밎崹䎐貇汫踖뢸숥퍞르뗿䭯䖝䱅䵱꽔븽䢴ꁅ⟼蒠癸ꩽ靝臨䚝!⩏鍁Ꮨ䷇쁐쨒ʊ쪦鄭借滋鉚ᮉ嚃ᩨိ펇ꮼ뇄」ᰉ㕾椏鯅蛺䠿櫄築픆車똅렬㈆ّἋ蕎괋랆偦뤰䝷핸⹝屑素蝨懷猔勳碉퀪睹Ⓥ䍙ಗ䤮뾿謝ꁼ戻ڳᆯ콧逼ز븭碇쮢籍⁜왋壝罵暷샖ࣵ艫䃴厫ᢉ慨䁆ꂴ溘欋옭螶䦗跠﨔膉痹邘⋫吪멚埣ꯕ扌옘廣犵肖街㶕暢몡ↇ꠫襤픧ၥ幘놤ਰ惘똞顫糴쫼鿋䬝獲⺁峁踷鍀副鰀嗊⹀譎遲䩢푑팾糔뭯ࣷ䷴䬾갭ⶵ틩魨㵻恬҅པᣄⲪ豩뛌꛵㥨몙〼△⏮큤亃ꢡ웼ఐ칇뻻펂㢓吋䂃䨠䕱>。
實際:
<☔ฺ疉鎷얚跨꿌潙얫嘹֨ز항們嵜浮䑹شم靄斳薃픢萁⯬쫎ʛ⫕蝺ꄗ穌넢뇌䶆멊큀퉆䐫̥괊⑆놸僥̅ᵀ㣚ꢅ뺓䇚녚伀讍홬䈕캾撏Ჴ孢黮摠뮡䌦윃ᬳ狚䆙툾훶䏤ꛈṻ⟧㉖鮸蒵萗냤퇅서㪨瀲鰪殘䓴ۇ넃櫜㑦䢻쮓죣䕱䶘㴝姳뿝嘼ᷨ㗬꺬櫣涷꠶滸껅က㷕䩉毎覛⧹䮯嬇힚艐Ὑ쇕횻鸙蹻硐䈆쓖⸛錼鰙ኰ乒⺴썓힠䵓ꅄⵈ桃悵㾈枟⏠ه폫ا琖ퟰ乼쩐鑈푷᫇蕱늛쭡䙠ⲓᒇꪮ툅⃑ꦴ돻♹ᢋ麝熪뚭Ћ䌚娯鈕⡃㪿ㅞ⤩㥍車䎘磛蚾ㅸ擫떦蝳分鰽䠺ꭍ튘폻⥽ⳉ歷驛똮⯴⋟Ḋ룴墭䐣앾郢ᵸᮄ杗奪騑硼佑烑鄗䳘핬溴墽炁ࣘヲ栥풼ಃ鬥狹就쵎嬒瀃碂밎崹䎐貇汫踖뢸숥퍞르뗿䭯䖝䱅䵱꽔븽䢴ꁅ⟼蒠癸ꩽ靝臨䚝!⩏鍁Ꮨ䷇쁐쨒ʊ쪦鄭借滋鉚ᮉ嚃ᩨိ펇ꮼ뇄」ᰉ㕾椏鯅蛺䠿櫄築픆車똅렬㈆ّἋ蕎괋랆偦뤰䝷핸⹝屑素蝨懷猔勳碉퀪睹Ⓥ䍙ಗ䤮뾿謝ꁼ戻ڳᆯ콧逼ز븭碇쮢籍⁜왋壝罵暷샖ࣵ艫䃴厫ᢉ慨䁆ꂴ溘欋옭螶䦗跠﨔膉痹邘⋫吪멚埣ꯕ扌옘廣犵肖街㶕暢몡ↇ꠫襤픧ၥ幘놤ਰ惘똞顫糴쫼鿋䬝獲⺁峁踷鍀副鰀嗊⹀譎遲䩢푑팾糔뭯ࣷ䷴䬾갭ⶵ틩魨㵻恬҅པᣄⲪ豩뛌꛵㥨몙〼△⏮큤亃ꢡ웼ఐ칇뻻펂㢓吋䂃䨠䕱>。
我錯過了什麼?
哇。對於我來說這兩個字符串是否一目瞭然一點也不明顯。 – 2009-05-25 15:27:20
哪些AreEqual失敗? – 2009-05-25 15:27:23
@Stefan,第二個。 – 2009-05-25 15:31:02