逐字字符串缺少回车符



我今天遇到了一个奇怪的问题。 我有一个这样的逐字字符串:

var s = @"     0     1
0     0"

即在一行之后有一行新行。 我的环境换行符设置为 \r

这是单元测试的一部分,过去几个月测试运行良好。 现在,当我运行测试时,上面的字符串声明会导致:

"     0     1n     0     0"

而不是

"     0     1rn     0     0"

意味着测试失败。

我已经抛弃了每一个角色来证明这是真的。 我也尝试不使用逐字字符串,而是像这样:

var s = "     0     1rn    0     0"

然后测试通过。

有谁知道这里会发生什么?

答案是这样的:Git(很可能(将文件中的行尾交换为LF。 在单元测试中依赖文件行结尾不是一个好主意,因此我更改了代码以在所有情况下都显式指定换行符,因此:

var s = "     0     1rn    0     0"

如果要在单元测试中使用字符串,最好确保内容始终相同。我建议这样声明:

var s = $"     0     1{Enviroment.NewLine}0     0";

可以将字符串内插与逐字一起使用来添加控制字符。

var s = @$"     0     1{'r'}
0     0"

请检查此答案 - 基本上是由代码编辑器行尾设置引起的。我们在单元测试中遇到了同样的问题。

相关内容

  • 没有找到相关文章

最新更新