我正在編寫一個代碼生成器,它將接受一個數據表,並使用它將從它在數據表中找到的內容生成鍋爐板c#代碼。Assert.AreEqual在將字符串與從光盤讀取的文件進行比較時失敗
我正在創建一個c#代碼文件,並將其與我的代碼生成器生成的字符串進行比較。
我從磁盤讀取代碼文件爲一個字符串,並將其與生成的字符串進行比較,並將字符串作爲參數傳遞給Assert.AreEqual - 失敗。如果我將生成的字符串寫出到文本文件並進行比較,文本看起來是相同的 - 但是文件大小略有不同,並且使用文件比較實用程序,文件末尾似乎還有一個額外的高級ascii類型字符這是通過我的代碼生成器創建的。
關於「upper ascii」字符,如果我使用十六進制編輯器比較文件,則在文件的開頭和結尾處有一些額外的十六進制值,這些十六進制值是使用Visual Studio創建的,並不存在於文件中由我的應用程序創建。這些十六進制值的開頭是:「EF BB BF」,最後的值是:「0D 0A」。
另一個線索可能會解釋一些事情:當我將生成的文件添加到Visual Studio中的項目中時,出現以下消息:「以下文件中的行結尾不一致。是否要標準化線路結局?「
單元測試的內容:
[TestMethod]
public void TestGenerateBDO()
{
const string originalCodePath = @"c:\temp\UnitTestGenerator\BugSource.cs";
BusinessDomainGenerator generator =
new BusinessDomainGenerator(new System.Data.DataTable(), "BugsBDO", "Bug");
// this adds the body of the text file
AddTestGenerateBDOCodeLines(generator);
// I've tried using the 2nd parameter of ReadAllText to pass
// different encodings - no difference
string originalCode = System.IO.File.ReadAllText(originalCodePath);
string formattedCode = generator.GetGeneratedCode();
Assert.AreEqual(originalCode, formattedCode);
}
「文件的意圖和目的內容是相同的」 - 不,它們不是。你已經描述過它們的不同之處。如果文件大小不同,並且文件末尾還有一個額外的字符,那麼它們顯然不同! (我不確定你的意思是「一個額外的高級ASCII字符」)。 –
你的權利 - 檔案不同,我不清楚我的意思是「意圖和目的」。爲了消除混淆,我修改了原始問題。 – Matt