2012-01-06 68 views
0

我正在开发一个集成测试应用程序,这是我在做的测试用例, 我读了一个测试输入文件,它存储在cvs中,写入它到文件系统中的文件,应用程序轮询文件目录,处理它并创建输出文件,然后轮询输出文件的目录,如果两个文件内容相等,则测试用例成功(我是将两个输入文件和输出文件读入字符串并进行比较)。回车和换行窗口和Linux java应用程序

问题是这个测试用例在linux系统中运行时失败,原因是存储在cvs中的文件是从包含CRLF作为行结束符的windows系统签入的,而生成的输出文件有行终止为CR,现在当我读取这些文件并逐字比较它们时,它们有不匹配。

任何人都可以在这里帮助。

回答

3

您可以检查使用System.getProperty("line.separator")

由于您使用的文本文件的主机操作系统行分隔符,你也可以通过比较行的文件内容一致。检查LineNumberReader.readLine()

0

您可以从下载的文件中删除所有'\ r'字符?或者用“\ n”Linux版本替换“\ r \ n”Windows字符串。小心Mac的情况:行尾可以用“\ r”来标识。

+0

我不想在代码中做任何操作系统特定的更改。 – flash 2012-01-06 09:21:27

3

您可以尝试按行比较它们。例如。为此使用FileUtils

List<String> file1 = FileUtils.readLines(...); 
List<String> file2 = FileUtils.readLines(...); 
return file1.equals(file2); 
0

当你检入文件时,你可以告诉CVS它是一个二进制文件(cvs add -kb),然后CVS不会沿途转换行尾。

这也有其他缺点,例如,没有适当的差异,但如果你真的一个字符地测试字符,我想你不需要那个。

请注意,您必须在添加文件时指定-kb,以后不能更改它。