我是使用mstest框架进行单元测试用例编写的新手,我仍然坚持从xml文件中检索新行字符作为预期值的输入。以下是测试方法
public void ExtractNewLineTest()
{
MathLibraray target = new MathLibraray(); // TODO: Initialize to an appropriate value
string expected = TestContext.DataRow["ExpectedValue"].ToString(); => I am retrieving the value from the xml file.
string actual;
actual = target.ExtractNewLine();
Assert.AreEqual(expected, actual);
}
以下是xml内容
<ExtractNewLineTest>
<ExpectedValue><![CDATA[select distinct\tCDBREGNO,\r\n\tMOLWEIGHT,\r\n\tMDLNUMBER\r\nfrom Mol]]></ExpectedValue>
</ExtractNewLineTest>
当我从xml检索数据到期望值时,我得到低于字符串
ExpectedValue = “select distinct\\tCDBREGNO,\\r\\n\\tMOLWEIGHT,\\r\\n\\tMDLNUMBER\\r\\nfrom Mol”;
如果我们看到上面的值,则会为\ n和\ r添加额外的斜杠。 请让我知道,我如何断言这个价值。谢谢!
答案 0 :(得分:2)
您的XML文件不包含换行符。它包含反斜杠,后跟t
,r
或n
。忠实地从XML文件中读取该组合,然后调试器在向您显示反斜杠时转义反斜杠。
如果要将“C#string escaping”规则应用于从XML读取的值,您可以这样做,但是您应该知道需要这样做。一种简单的方法是:
expectedValue = expectedValue.Replace("\\t", "\t")
.Replace("\\n", "\n")
.Replace("\\r", "\r")
.Replace("\\\\", "\\");
有些情况下会出错 - 例如,如果你有一个正版反斜杠后跟t
。虽然这对你来说可能已经足够了。如果没有,你将不得不写一个“正确的”替换,从一开始就读取字符串并处理各种情况。