2013-12-16 7 views
8

Ho Visual Studio 2010 e abbiamo due soluzioni VS con cui collaboriamo. Il primo è l'applicazione Web e il secondo è rigorosamente per i test SpecFlow. Avere due istanze di Visual Studio in esecuzione allo stesso tempo solo per eseguire le funzionalità di SpecFlow sta consumando tutta la RAM disponibile causando rallentamenti.Come si eseguono gli scenari SpecFlow dalla riga di comando utilizzando MSTest?

Ho eseguito alcune ricerche su Google e qui su StackOverflow, oltre a esaminare la documentazione MS sullo strumento da riga di comando MSTest, ma non ho trovato la risposta. La completa suite di test SpecFlow impiega circa 45 minuti per essere completata e devo solo eseguire alcuni scenari.

Mi chiedevo se esiste un modo per eseguire le singole funzionalità di SpecFlow e anche singoli scenari dalla riga di comando utilizzando MSTest?

+0

Si potrebbe anche considerare di guardare NCrunch (http://NCrunch.net) o ContinuousTests (http://www.continuoustests.com). Entrambi questi strumenti sono progettati per eseguire i test il più rapidamente possibile. Io uso NCrunch che ha * eseguito solo i test interessati dalla mia modalità di modifica *, e sarebbe proprio quello che stai cercando – AlSki

risposta

9

Dietro la scena i test di specflow sono solo i più semplici test unitari. Così si dovrebbe essere in grado di eseguire nello stesso modo con qualcosa di simile:

Per eseguire uno scenario specifico:

mstest /testcontainer:tests.dll /test:GivenMyScenarioWhenIDoSomeStuff 

Per eseguire i parecchi scenario specifico è possibile utilizzare i/bandiera di prova più volte:

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

Per eseguire una funzione

mstest /testcontainer:tests.dll /test:MyFeatureName 

Se si aggiungono i tag sul tuo scenari utilizzando @MyTag per esempio, è possibile anche utilizzare l'opzione

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

prega di dare un'occhiata al codice generato dietro dei file funzione per ottenere un indizio di come le cose realmente funzionano, se familliar con mstest dovrebbe essere piuttosto semplice.

+0

Sembra che questa sia la risposta, tuttavia sto sbottonandomi contro un altro problema. Ho installato tutte le dipendenze del progetto di test tramite NuGet, che getta tutte quelle DLL nella directory "packages". L'utilità della riga di comando 'mstest' si aspetta che tutte le librerie di classi esistano nella directory di lavoro corrente. Ho installato il pacchetto NuGet 'SpecBind', che mi fornisce il file DLL mancante (SpecBind.CodedUI.dll) ma non viene copiato nella mia directory di build. Dovrò scavare in questo a meno che tu non abbia qualche suggerimento (sto usando i test CodedUI per questo progetto). –

+0

Sto contrassegnando questo come la risposta, perché sto sbattendo la testa contro un problema diverso - probabilmente uno a causa della configurazione della mia soluzione di Visual Studio. Grazie! –

+2

Utilizzare Vstest.console.exe invece di mstest. Vstest.console.exe caricherà automaticamente tutti i pacchetti di nuget e altre librerie. E.g Vstest.console.exe mytests.dll – Mohamed

2

È disponibile un pacchetto nuget denominato "Specrun.Specflow". E cambierà il tuo app.config e imposterai unitTestProvider name = "SpecRun", quindi puoi rimuovere unitTestProvider name = "MSTest" o "NUnit", ora con il salvataggio delle modifiche App.config, visual studio ti chiede di rigenerare i tuoi file di funzione, fai clic su Sì e ora crea una soluzione. Quello che vedrai è che i tuoi file di test sono stati rigenerati. Ora nel tuo prompt dei comandi vai su C: \ Users \\ Documents \ Visual Studio 2015 \ Projects \ e digita runtests.cmd, dovrebbe attivare tutti i tuoi file Feature direttamente.

+2

Specrun.Specflow è il prodotto commerciale di Specflow e costa 150 dollari per utente.Questo flusso di entrate sembra essere il motivo per cui c'è poco o nessun supporto per l'esecuzione del flusso di specifiche in nessuno dei normali corridori open source. Pagato per i corridori è davvero inutile per gli ambienti CI e presenta una barriera organizzativa per l'utilizzo anche per le società benestanti. Questo naturalmente non è colpa tua ma ho pensato che dovrebbe essere menzionato come un avvertimento importante al tuo suggerimento. – Amias

Problemi correlati