簡體   English   中英

將回車符字符串文字轉換為回車符

[英]Convert carriage return string literal to carriage return

我在C#中進行了數據驅動的測試,該測試可以驗證函數是否正確創建了給定輸入的字符串。

被測代碼:

public static class Formatter
{
    public static String FormatWithCarriageReturn(int position)
    {
        return String.Format("#0 P{0} T1000 \r", position);
    }
}

FormatWithCarriageReturn 必須返回附加了回車符的字符串。

為了測試此方法,我在MSTest中創建了一個數據驅動測試,該測試從CSV文件加載數據。

CSV檔案:

position, expected
1, #0 P1 T1000 \r
2, #0 P2 T1000 \r
3, #0 P3 T1000 \r
4, #0 P4 T1000 \r
5, #0 P5 T1000 \r
6, #0 P6 T1000 \r

測試方法:

/* Test method and data source attributes*/
public void FormattingWithCarriageReturnFormatsCorrectly()
{
    String expected = TestContext.DataRow["expected"].ToString();
    /* various setup code. */
    int requestedPosition = Convert.ToInt32(TestContext.DataRow["position"]);
    String actual = Formatter.FormatWithCarriageReturn(requestedPosition);
    Assert.AreEqual(expected, actual);
}

問題是TestContext.DataRow["expected"].ToString()語句將加載字符串文字#0 P1 T1000 \\\\r ,並且Assert失敗,因為它正在將#0 P1 T1000 \\r#0 P1 T1000 < -我無法正確格式化。 最后應該有一個回車符。

有沒有辦法在回車到位的情況下從CSV文件中獲取期望的字符串? 我可以在CSV文件中將預期的字符串列為#0 P1 T1000 ,然后執行類似expected = String.Concat(expected, " \\r"); ,但我想將完整的預期字符串保留在CSV文件中。

編輯:這是我得到的當前斷言消息:

Result1 Message: Assert.AreEqual failed. Expected:<#0 P1 T1000 \r>. Actual:<#0 P1 T1000
>.

傳遞的消息將顯示為

Result1 Message: Assert.AreEqual passed. Expected:<#0 P1 T1000 
>. Actual:<#0 P1 T1000
>.

請注意, expectedactual都在末尾有回車符。

從csv文件中的行中刪除“ \\ r”並進行更改

String expected = TestContext.DataRow["expected"].ToString();

String expected = TestContext.DataRow["expected"].ToString() +
    new String(new[] { (char)0x0D });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM