2012-01-06 61 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,以後不能更改它。