2012-03-06 64 views
5

我們是NuGet的大用戶,我們有25-30個包,我們通過網絡共享。測試一個NuGet包

我們希望能夠在新軟件包在消費應用程序中構建和發佈之前進行測試。理想情況下,這可以使用something similar to Maven's snapshot並具有特定開發包(例如snapshot functionality)來完成。

是否有其他人想出了一個理想的非哈希方法呢?

我們最喜歡的方法是生成程序包程序集,然後手動覆蓋程序包/目錄中的程序集,即替換實際的項目引用,但似乎並不特別乾淨。

更新:

我們使用它創建建立在每一個承諾,並有特定的手動觸發的NuGet建造一關工作特別標記的代碼庫的版本CI構建服務器。我們不希望在每次提交時創建一個NuGet構建,但我們希望能夠在我們觸發NuGet包構建之前在野外測試可能的候選人。

回答

2

如果您使用NuGet包來分發您的庫,那麼您不應該僅限於測試這些庫。你也應該自己測試軟件包(如果你的二進制文件可以,但安裝不正確,消費者仍然有問題)。關鍵是要改善這種體驗。

一種方法可能是讓有一個額外的CI或QA存儲庫。您目前擁有的產品實際上就是您的「生產」存儲庫,其中包含易耗品版本,被視爲成品高品質產品。更進一步,您可以擁有邏輯包促銷流程(基於持續集成或甚至使用連續傳送方式),其中: - 每個簽入在您的CI存儲庫上生成一個包 - 測試人員選擇一個CI軟件包,如果發現可以將其推廣到QA Feed或生產Feed(無論您喜歡什麼,取決於您的測試質量以及它的自動化程度)

有多種實施方式這種情況下,使用簡單的網絡共享,內部NuGet.Server或庫實現,或者只需使用http://myget.org以最小的成本和零工作嘗試。

希望有幫助!

乾杯, 澤維爾

+0

我們只是一個內部使用的開發團隊,至少對於這個需求,我們只有在驗證組件是合理的之後。典型的工作流程是應用程序開發人員在軟件包中發現錯誤。軟件包開發人員(可能但不一定是同一個人)將在軟件包中創建測試並創建候選版本 - 但我們希望能夠在應用程序被破壞的情況下對軟件包進行優雅的測試。 Maven快照或開發版本是此場景的理想選擇。 NuGet沒有任何東西可以直接使用。 – Unsliced 2012-03-06 22:50:43

+0

選中此鏈接[http://www.arunrana.net/2012/01/testing-nuget-package-before-publishing.html]。簡而言之,您可以添加指向您的「未發佈」軟件包的另一個軟件包源(文件路徑),然後使用軟件包管理器控制檯從該位置進行安裝。 – 2013-03-27 17:23:06

0

我最後寫一個單元/集成測試框架來解決simular問題。基本上,我需要驗證包的內容,版本和信息,安裝和卸載包時會發生什麼情況,lib中的程序集有哪些版本,程序集構建的位數是多少(x86或x64),以及所以 - 我需要這一切,沒有Visual Studio安裝,並在我的生成機器(無頭)作爲質量門。

站在像巨人的肩膀上:PesterPEToolsSharpDevelop's package management module我放在一起 - nuget-test

  1. 克隆項目到您的包目錄中(其中你。nuspec文件和包文件)。如果因爲某種原因你想保持nuget-test項目爲「git」repo,那麼從下面的命令中簡單地刪除「remove-item nuget-test/.git -Recurse -Force」。

    git clone https://github.com/nickfloyd/nuget-test.git; remove-item nuget-test/.git -Recurse -Force

  2. 運行Setup.ps1在的NuGet測試目錄的PowerShell中的x86的實例的根。

    PS> .\setup.ps1

  3. 編寫測試,並使用Pester語法將它們放置在的NuGet測試/ test目錄。

  4. 運行測試。

    PS> Invoke-Pester

項目頁面:nuget-test
在GitHub上:https://github.com/nickfloyd/nuget-test

我希望這可以幫助你接近你想把你做了什麼。