2015-04-29 53 views
3

我們有大量的需要二進制數據作爲輸入和輸出的單元測試。輸入很少改變,但輸出不時,我們必須手動檢查輸出,然後提交一個新的「正確」版本。我們應該在哪裏保存我們的二進制測試數據?

我們目前將這些文件存儲在一箇中央文件系統中,但每次我們分支然後更改一個輸出時,我們的單元測試中斷,因爲branch1可能比branch2具有更早的輸出。我們想要版本控制這些二進制文件。我們是否應該使用諸如Sonatype Nexus或JFrog Artifactory這樣的工件存儲庫?另外,鑑於我對Maven的仇恨,我最終會哭泣嗎?

+0

1)您是否已經使用maven構建您的項目?如果是的話,你可以在maven中設置這一切,但它需要一些配置(3-4 xml條目) 2)如果沒有,使用http [s]下載工件,然後提取所需? –

+0

不,我們不使用Maven。下載可能是必需的 - 這是真正的問題,不需要提取。 – mjaggard

+0

我真的很想找到這個問題的最佳實踐答案。 – mjaggard

回答

1

如果這些文件足夠小,那麼您可以將它們與您的測試一起存儲在VCS中。

如果它不是一個選項,那麼你可以手動版本,但沒有任何版本控制系統。只是使文件'不可變'。只需將它們命名爲xxx_v1.0.4(或xxx_2015-08-12)並複製更改,重命名文件並讓新測試引用新文件。你只需要刪除任何分支沒有使用的文件

+0

它們對於VCS來說太大了,我真的不喜歡手動版本化的想法 - 它對我來說很有用,現在甚至可以爲我們所有人工作,但在2年內我們一定會後悔的。 – mjaggard

+0

@mjaggard,但手動版本控制就是你現在正在做的。您手動創建新的輸出版本並保存它。它會在CI上導致問題。我的建議是:做同樣的事情,只保存不同的名字。你將有同樣數量的工作,沒有CI問題 – piotrek

+0

正好,我想減少工作量。 – mjaggard

2

僅僅爲這些文件管理nexus可能過於複雜,特別是如果你對maven不太滿意。

一個單一的svn server可能是一個更好的解決方案。你可以使用svn url來指向確切的revision of the artifacts

Svn很好地處理大文件。而提交/添加資源的svn命令行將比將它們部署到nexus的命令行更直接。

如果您的情況是:大文件,需要中央服務器,需要版本控制,尚未使用maven。

+0

我喜歡這種聲音,而且這是我已經開始走下坡路。這只是我花了一些編碼時間來完成工作(特別是我想支持脫機運行的用戶,所以我定義了一個緩存目錄,其中包含測試運行所需的所有修訂版本中的所有文檔) – mjaggard

+0

很酷。我希望你能夠訪問客戶端機器上的svn客戶端。通過使用svn命令行檢出版本(或標籤)來緩存會更簡單。無論如何,這些文件有多大? –

+0

我必須檢查每個文件的正確版本,所以它不是很簡單 - 我也想創建一個簡單的方法讓開發人員根據測試運行來提交新文件(在檢查時提交測試結果) 沒有超過1GB的。 – mjaggard

相關問題