我正在编写单元测试,并且不记得使用大块格式化文本初始化字符串的语法。
string _testData = "a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";
答案 0 :(得分:15)
在文字前添加@
。
string _testData = @"a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";
答案 1 :(得分:10)
使用@ literal表示字符串类型。
string _testData = @"a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";
从MSDN:“逐字字符串文字以@开头,并且也用双引号括起来。逐字字符串的优点是不处理转义序列,这使得它易于编写,例如,完全限定的文件名。要在@ -quoted字符串中包含双引号,请加倍。“
答案 2 :(得分:5)
正如其他人所说,这是
string _testData = @"a couple screens worth of text data here
and I need to preserve the formatting
such as line breaks,
etc.";
这称为逐字字符串文字。另一个影响是反斜杠不再用于转义任何东西 - 这使得它对正则表达式和Windows文件路径很有用。
双引号是通过加倍实现的。例如,在字符串中获取x"y
:
string verbatim = @"x""y";
string regular = "x\"y";
答案 3 :(得分:1)
您可能应该创建应用程序读取并存储在内存中的文件资源,而不是使用静态格式化文本来混淆代码。这样,如果您需要更改它或格式化不同的方式,您可以进行更改,而无需进一步触摸和混乱您的代码。
答案 4 :(得分:0)
我同意Wayne Hartman的说法 - 只需将您的大文本存储为文本文件并将其读入字符串进行测试,例如:
string testData = File.ReadAllText(fileToRead);
//Unit test using the testData
这里没有任何逻辑可以阻碍你的其他测试。单元测试仍然关注您的功能,它只是使用文本文件来方便地存储大字符串。