2016-01-13 72 views
0

我在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 <比較#0 P1 T1000 \r失敗 - 我無法得到這個格式正確。最後應該有回車。

有沒有一種方法來獲得預期的字符串從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在結尾處回車。

+0

'返回的String.Format( 「#0 P {0} T1000 \ R」 ,position;'是一個錯字......你錯過了一個結尾')'如果你在這個返回String.Format(@「#0 P {0} T1000 \ r 「,position);' – MethodMan

+1

測試數據根本不包含回車符。它以*兩個*字符結尾,一個反斜槓和一個r。區分字符串字符串中的轉義序列。如果你想要一個匹配,那麼你需要'expected = expected.Replace(「\\ r」,「\ r」); –

回答

0

刪除從csv文件行中的 「\ r」 和改變

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

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

直接從問題:「我可以在CSV文件中列出所需的字符串作爲#0 P1 T1000,然後執行類似expected = String.Concat(預計,」\ r「);, **但我想在CSV文件中保留完整的預期字符串。**「 – CHendrix

+1

不是回車0x0D? –

+0

我在他的最終編輯期間輸入了這個內容 - 我沒有看到他指定他想保留csv中的cr。 – Kevin

相關問題