将回车符串字符串转换为回车符

时间:2016-01-13 16:33:43

标签: c# string encoding mstest 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最后都有回车符。

1 个答案:

答案 0 :(得分:0)

删除&#34; \ r&#34;从csv文件中的行和更改

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

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