2012-03-06 32 views
5

NuGet'in büyük kullanıcılarıyız, bir ağ paylaşımında hazırladığımız 25-30 paketimiz var.Bir NuGet paketinin test edilmesi

Tüketici uygulamalarında oluşturulmadan ve piyasaya sürülmeden önce yeni paketleri test edebilmek istiyoruz. İdeal olarak, bu, something similar to Maven's snapshot kullanılarak ve belirli bir geliştirme paketine (ör. snapshot functionality) sahip olarak yapılabilir.

Başkası, ideal olarak makul olmayan, habersiz bir şekilde ortaya çıkıyor mu?

Tercih edilen yöntemimiz, paket derlemelerini oluşturmak ve daha sonra paketleri/dizilerdeki derlemelerin üzerine yazmak, yani gerçek proje referanslarını değiştirmek, ancak bu özellikle temiz görünmüyor.

Güncelleme:

Biz her işlemek üzerine inşa oluşturur ve belirli bir elle Nuget özellikle kod temeli versiyonlarını etiketli kulanan hangi inşa tetiklediği olan bir CI inşa sunucu kullanmak. Her işlem için bir NuGet oluşturmak istemiyoruz, ancak biz manuel NuGet paketi oluşturulmasını tetiklemeden önce vahşi bir adayı test edebilmek istiyoruz.

cevap

2

Kitaplığınızı dağıtmak için NuGet paketlerini kullanıyorsanız, yalnızca kitaplıkları sınamakla sınırlı kalmazsınız. Paketleri de kendiniz test etmelisiniz (eğer ikili dosyalarınız doğruysa ancak yanlış takılmışsa, tüketicilerin hala sorunları vardır). Bütün bu deneyim, bu deneyimi geliştirmektir.

Tek yön ek CI veya QA deposu olabilir. Şu anda sahip olduğunuz, aslında yüksek kaliteli ürünler olarak kabul edilen sarf malzeme içeren "üretim" deponuzdur. Daha da ileri giden

, bir mantıksal paket promosyon akışını olabilir, (Sürekli Entegrasyon hatta Sürekli Teslim yaklaşım kullanarak dayanarak): - Her check-in senin CI depo bir paket üretir - test kadar almak QA için CI paketi ve eğer bulunursa OK bunu bir QA yayınına veya Üretim feed'ine tanıtın (ne isterseniz, testinizin kalitesine ve otomatik olarak ne kadar iyi olduğuna bağlıdır)

Uygulamanın çeşitli yolları vardır. Basit ağ paylaşımları, iç NuGet.Server veya Galeri uygulamalarını kullanarak bu senaryoyu, ya da sadece http://myget.org kullanın ve minimum maliyet ve sıfır çaba ile deneyin.

Bu yardımcı olur umarım!

Alkış, Xavier

+0

Yalnızca dahili kullanımlı bir geliştirme ekibiyiz ve en azından bu gereklilik için, montajın aklı başında olduğunu onayladıktan sonra geleceğiz. Tipik iş akışı, uygulama geliştiricisinin pakette bir hata bulmasıdır. Paket geliştirici (muhtemelen, ancak aynı kişi değil) pakette testler oluşturacak ve bir aday oluşturma işlemi yaratacaktır - ancak paketin, kırıldığı uygulamada test edilmesinin zarif bir yoluna sahip olmak isteriz. Mavenin anlık görüntüsü veya geliştirme yapısı bu senaryo için idealdir. NuGet kutunun dışında düzgün bir şey yok. – Unsliced

+0

Bu bağlantıyı kontrol edin [http://www.arunrana.net/2012/01/testing-nuget-package-before-publishing.html]. Kısa cevap, "yayımlanmamış" paketlerinize işaret eden başka bir Paket Kaynağı (dosya yolu) ekleyebilir, ardından o konumdan yüklemek için Paket Yöneticisi Konsolu'nu kullanabilirsiniz. –

0

ben simular sorunu çözmek için bir birim/entegrasyon test çerçevesi yazma sona erdi. Temel olarak, paketin içeriğine, sürümlere ve bilgilere, pakete yüklendiğimde ve kaldırıldığında ne olacağına, lib'deki meclislerin hangi sürümlerin oluşturulduğuna, meclislerin (x86 veya x64) olarak hangi bitlerin oluşturulduğuna ve Yani - ve Visual Studio yüklü olmadan ve benim yapı makinemde (başsız) kaliteli bir kapı olarak çalışmasına ihtiyacım vardı.

gibi devlerin omuzlarında Daimi: Pester, PETools ve SharpDevelop's package management module araya getirdiğim - nuget-test

  1. Clone projesi paket dizine (burada senin.nuspec dosya ve paket dosyaları). Herhangi bir nedenden dolayı, nuget-test projesini bir "git" repo'su olarak tutmak istiyorsanız, aşağıdaki komuttan "remove-item nuget-test/.git -Recurse -Force" dosyasını kaldırın. PowerShell bir x86 örneğinde Nuget test dizininin kök

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

  2. çalıştırın Setup.ps1.

    PS> .\setup.ps1

  3. Yaz testleri ve Pester sözdizimi kullanılarak Nuget test/test dizininde koyun.

  4. Testleri gerçekleştirin.

    PS> Invoke-Pester

Proje sayfası: Bu size halletmek için çalışıyoruz ne yakın kılacağını umut https://github.com/nickfloyd/nuget-test

: github üzerinde nuget-test
.

İlgili konular