0

我有一个生成以下内容的方法,我将其保存在一个字符串中,假设该字符串是名称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 

或者

Assert.AreEqual(output,hardCoded);

是假的。如何比较这两个

4

1 回答 1

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)));
}
于 2013-07-09T09:51:22.850 回答