我有一个生成以下内容的方法,我将其保存在字符串中,假设字符串是名称output
HDRPB509030978SENTRIC MUSIC 01.102013070914290620130709
GRHREV0000102.100000000000
REV0000000000000000AWAITING YOUR CALL EN00000000044021 POP000436Y ORI PHIL
TRL000010000000100000022
我正在尝试的是硬编码上面的行并将其与生成的输出进行比较。我这样硬编码我用\ n这样替换下一行
string hardCoded = " HDRPB509030978SENTRIC MUSIC \n01.102013070914290620130709 \n GRHREV0000102.100000000000 \n REV0000000000000000AWAITING YOUR CALL \nEN00000000044021 POP000436Y ORI PHIL \n TRL000010000000100000022 "
现在我比较
output == hardCoded
OR
Assert.AreEqual(output,hardCoded);
是假的。如何比较这两个
答案 0 :(得分:4)
比较多行字符串与比较单行字符串没有什么不同:您比较的字符串必须符合字符,包括空格和换行符。如果生成的字符串使用\r\n
分隔符而不是\n
,那么您希望获得的字符串常量也必须包含相同的分隔符。您可以通过设置断点来检查所使用的分隔符的类型,并检查在调试器中生成的字符串。
不要对字符串进行硬编码以进行单元测试,而应考虑从资源中读取它。这将允许您在文本编辑器中编辑字符串,并在视觉上检查它是否存在差异。
最后,如果你不需要匹配空格,你可以定义一个比较字符串排除空格的函数:
static bool EqualsExcludingWhitespace(String a, String b) {
return a.Where(c => !Char.IsWhiteSpace(c))
.SequenceEqual(b.Where(c => !Char.IsWhiteSpace(c)));
}