Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置JVM";行分隔符“;mvn测试命令的属性_Java_Linux_Windows_Maven_Special Characters - Fatal编程技术网

Java 设置JVM";行分隔符“;mvn测试命令的属性

Java 设置JVM";行分隔符“;mvn测试命令的属性,java,linux,windows,maven,special-characters,Java,Linux,Windows,Maven,Special Characters,我们有许多单元测试,它们在内存中组装多行字符串,并将其与文件中的引用字符串进行比较 我们有点忘乎所以,实现了使用System.getProperty(“line.separator”)使代码操作系统不可知的测试,但是参考文件只是带有\n行结尾的文件(Linux),因此,将生成的内容与参考文件内容进行比较的测试在Windows计算机上失败,因为System.getProperty(“line.separator”)在那里返回\r\n 这是测试代码,所以我们可能只需定义一个最后的字符串LINE\u

我们有许多单元测试,它们在内存中组装多行字符串,并将其与文件中的引用字符串进行比较

我们有点忘乎所以,实现了使用
System.getProperty(“line.separator”)
使代码操作系统不可知的测试,但是参考文件只是带有
\n
行结尾的文件(Linux),因此,将生成的内容与参考文件内容进行比较的测试在Windows计算机上失败,因为
System.getProperty(“line.separator”)
在那里返回
\r\n

这是测试代码,所以我们可能只需定义一个最后的字符串
LINE\u end=“\n”
,并更新测试以使用它,而不是
“LINE.separator”
属性值,但也就是说,我很想理解为什么我无法指定不同的行分隔符。我尝试了
mvn-DargLine=“-Dline.separator=\n”测试
,但换行符特殊字符似乎被解释为文字字母
“n”
,因此测试再次失败。令我惊讶的是,尝试
\\n
而不是
\n
也没有什么不同

有人能说明如何正确设置
行分隔符
参数吗


最后一点注意:上面的命令是在Linux机器上发出的。在Windows上从Eclipse中运行其中一个测试时,
\n
特殊字符(作为JVM参数
-Dline.separator=\n
在调试配置中传递)似乎被解释为文本值
“\\n”
。在网上搜索结果令人沮丧。

为什么不修复那些被破坏的测试,因为它们没有测试正确的东西呢?请看这个:-tl;dr-不要在全球范围内这样做,它可能会影响您正在使用的LIB;将需要使用另一个line.separator的部分(在代码中)用一个支持的让我重复:我知道测试没有测试正确的东西(我在问题中试图澄清这一点,显然很糟糕)。至于安全问题,这些都是单元测试:它们不依赖于外部库(surefire需要的库除外)来运行测试,因此我认为没有问题,并且仍然希望了解如何从CLI设置line.separator JVM系统属性,即使我们很可能只使用“\n”在测试中显式地使用相同的行分隔符生成引用输出。我要求学习,不一定要在这里应用。我有一个类似的问题,只是
replaceAll(“\r”,”)
对字符串进行比较。说到这里,我想知道如何模拟Windows风格的结尾,以知道我的测试将在Windows和linux上通过。