2013-12-16 16 views
8

Visual Studio 2010'um var ve birlikte çalıştığımız iki VS çözümümüz var. Birincisi web uygulaması, ikincisi ise SpecFlow testleri için kesinlikle. Visual Studio'nun iki örneği aynı anda sadece SpecFlow özelliklerini çalıştırmak için çalışıyorken, tüm RAM'leri bir şeyler yavaşlatmasına neden oluyor.MSTest kullanarak SpecFlow senaryolarını komut satırından nasıl çalıştırıyorsunuz?

Bazıları Google'da ve StackOverflow üzerinde arama yaptım, ayrıca MS belgelerini MSTest komut satırı aracında kullanıyorum ama yanıtı bulamadım. Tam SpecFlow test paketinin tamamlanması yaklaşık 45 dakika sürüyor ve gerçekten sadece birkaç senaryo çalıştırmam gerekiyor.

MSTest kullanarak komut satırından, tek tek SpecFlow özelliklerini ve hatta tek tek senaryolarını çalıştırmanın bir yolu olup olmadığını merak ediyordum?

+0

Ayrıca NCrunch (http://NCrunch.net) veya ContinuousTests (http://www.continuoustests.com) bakarak düşünebilirsiniz. Bu araçların her ikisi de testlerinizi mümkün olduğunca hızlı bir şekilde yürütmek için tasarlanmıştır. Ben sadece * benim değişiklik * modundan etkilenen testleri çalıştırmak * olan NCrunch kullanıyorum ve – AlSki

cevap

9

Sahnenin arkasındaki specflow testleri sadece en yüksek birim testleridir.

mstest /testcontainer:tests.dll /test:GivenMyScenarioWhenIDoSomeStuff 

sen/test bayrağı defalarca kullanabileceğiniz bir kaç spesifik senaryoyu çalıştırmak için::

belirli bir senaryo çalıştırmak için: Böylece gibi bir şey kullanarak onlara aynı şekilde çalıştırmak mümkün olmalıdır

mstest /testcontainer:tests.dll /test:GivenMyScenarioWhenIDoSomeStuff /test:GivenMyScenarioWhenIDoSomemthingElse 

Eğer senaryolar etiketleri eklerseniz bir özellik

mstest /testcontainer:tests.dll /test:MyFeatureName 

çalıştırmak için örneğin @MyTag kullanarak, ayrıca mstest olması gerektiği ile familliar ise

/category:MyTag to filter down the scenarios to run. 

, şeyler aslında nasıl çalıştığını bir ipucu elde etmek için özellik dosyalarının arkasına oluşturulan koda bir göz atın seçeneğini kullanabilirsiniz oldukça basit olmak.

+0

sonra ne olduğunu sadece bu cevap gibi görünüyor, ancak başka bir konuya karşı başımı kıstırma. Tüm test projelerinin bağımlılıklarını tüm bu DLL'leri "paketler" dizinine atan NuGet üzerinden kurdum. 'Mstest' komut satırı yardımcı programı, tüm sınıf kitaplıklarının geçerli çalışma dizininde bulunmasını bekler. Ben eksik DLL dosyasını (SpecBind.CodedUI.dll) verir, ancak benim yapı dizini için kopyalanan değil 'SpecBind' NuGet paketi yüklü. Bazı önerileriniz olmadıkça, bu konuya biraz iniş yapmak zorunda kalacağım (Bu proje için CodedUI testlerini kullanıyorum). –

+0

Bunu bir cevap olarak işaretliyorum çünkü başımı farklı bir sorunla karşı karşıya getiriyorum - muhtemelen Visual Studio çözümümün kurulumundan dolayı. Teşekkürler! –

+2

Mstest yerine Vstest.console.exe dosyasını kullanın. Vstest.console.exe otomatik olarak tüm nuget paketlerinizi ve diğer kütüphaneleri yükleyecektir. E.g Vstest.console.exe mytests.dll – Mohamed

2

"Specrun.Specflow" adlı bir nuget paketi var. Ve app.config değerini değiştirecek ve unitTestProvider adı = "SpecRun" ayarlanacak, böylece unitTestProvider name = "MSTest" veya "NUnit" öğesini kaldırabiliyorsunuz, şimdi App.config değişikliklerini kaydederek görsel stüdyo sizi özellik dosyalarınızı yeniden oluşturmanızı ister. Evet'e tıklayın ve şimdi bir çözüm oluşturun, Ne göreceğiniz test dosyalarınız yeniden oluşturuldu. Şimdi Komut İstemi'nde C: \ Users \\ Documents \ Visual Studio 2015 \ Projects \ 'e gidin ve runtests.cmd yazın, tüm Feature dosyalarınızı doğrudan tetiklemelidir.

+2

Specrun.Specflow, Specflow'un ticari ürünüdür ve kullanıcı başına 150 dolardır.Bu gelir akışının, standart açık kaynak koşucularının herhangi birinde spec akışını çalıştırmak için neden az destek olmadığı ya da hiç olmadığı görülüyor. Koşucular için ödenen CI ortamları için gerçekten yararsızdır ve zengin şirketler için bile kullanım için organizasyonel bir engel sunar. Bu elbette senin suçun değil ama senin önerin için büyük bir uyarı olarak belirtilmesi gerektiğini düşündüm. – Amias