我遇到了一個有趣的情況,因爲java的File.listFiles()方法返回目錄中的文件列表,沒有任何保證的順序。一個類使用此listFiles()方法從目錄中的所有文件中讀取一些信息並寫入OutputStream。相應的JUnit測試用例會嘗試將寫入輸出流的數據與某個預期的byteArray進行比較。測試通過我的開發機器和生產堆棧,但在開發服務器上失敗,因爲它使用不同的操作系統和不同版本的Java。java File.listFiles()順序不能保證,並導致JUnit測試失敗
在how to File.listFiles in alphabetical order?中,解決方案是強制對從File.listFiles()返回的數組進行排序。但是我對這個解決方案感到不舒服,因爲它正在做一些額外的工作,所以JUnit測試可以通過。
所以我只是想知道是否有更好的方法。有什麼建議?謝謝
我認爲這是值得整理的。誰能保證prod服務器在1年後不會移動到雲端? – gaborsch 2013-02-19 21:03:18
如果你說應用程序的業務邏輯不需要'排序文件',那麼你仍然必須有一些規則來決定你的OutputStream是否是一個正確的文件(它可能用在某個地方,並且預計會在某些地方具體格式還是smth)?如果這些規則存在,那麼你應該寫這些規則的單元測試 – jonasnas 2013-02-19 21:35:23
感謝您的迴應。應用程序會彙總這些文件中的信息,每行代表一個獨立的信息單元。輸出的接收者在每一行上都起作用,所以我不認爲排序是必要的。但從所有的反應來看,它似乎排序輸出是最好的方式,我會把它放在適當的位置。 @GaborSch我不清楚你對雲的評論 - 它會對排序有什麼影響嗎? – Jim 2013-02-20 14:23:19