[英]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
>.
請注意, expected
和actual
都在末尾有回車符。
從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.