Domanda

Visual Studio folder structure

Ho bisogno di consigli su come separare facilmente le esecuzioni di test per unit test e test di integrazione in Visual Studio.Spesso, o sempre, struttura la soluzione come presentata nell'immagine sopra:progetti separati per unit test e test di integrazione.Gli unit test vengono eseguiti molto frequentemente mentre i test di integrazione vengono naturalmente eseguiti quando il contesto è correttamente allineato.

Il mio obiettivo è riuscire in qualche modo a configurare quali test (o cartelle di test) eseguire quando utilizzo una scorciatoia da tastiera.I test dovrebbero preferibilmente essere eseguiti da un test runner grafico (ReSharpers).Quindi per esempio

  • Alt+1 esegue i test nel progetto BLL.Test,
  • Alt+2 esegue i test nel progetto DAL.Tests,
  • Alt+3 li esegue entrambi (cioètutti i test nella cartella [Test] e
  • Alt+4 esegue i test nella cartella [Tests.Integration].

TestDriven.net ha la possibilità di eseguire solo il test nella cartella o nel progetto selezionato facendo clic con il pulsante destro del mouse e selezionando Esegui test.Essere in grado di farlo, ma tramite un comando da tastiera e con un test runner grafico sarebbe fantastico.

TestDriven.net test run output

Attualmente utilizzo VS2008, ReSharper 4 e nUnit.Ma ovviamente sono apprezzati anche consigli per una sistemazione in generale.

È stato utile?

Soluzione

In realtà ho trovato una soluzione per questo da solo usando il comando da tastiera associato a una macro. La macro è stata registrata dal menu Strumenti > Macro > Record TemporaryMacro. Durante la registrazione ho selezionato la mia cartella [Test] e ho eseguito ReSharpers UnitTest.ContextRun. Ciò ha comportato la seguente macro,

Sub TemporaryMacro()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate
    DTE.ActiveWindow.Object.GetItem("TestUnitTest\Tests").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ExecuteCommand("ReSharper.UnitTest_ContextRun")
End Sub

che era quindi associato al suo comando da tastiera in Strumenti > Opzioni > Ambiente > Tastiera.

Tuttavia, ciò che sarebbe ancora più straordinario è una soluzione più generale in cui posso configurare esattamente quali progetti / cartelle / classi eseguire e quando. Ad esempio, tramite un file XML. Questo potrebbe quindi essere facilmente archiviato nel controllo versione e distribuito a tutti coloro che lavorano con il progetto.

Altri suggerimenti

Questa è una soluzione un po 'complicata, ma potresti configurare alcune strumenti esterni per ciascuno dei gruppi di test che si desidera eseguire. Non sono sicuro che sarai in grado di avviare il test runner ReSharper in questo modo, ma puoi eseguire la versione console di nunit. Dopo aver configurato tali strumenti, puoi assegnare le scorciatoie da tastiera ai comandi "Tools.ExternalCommand1" & ";" Tools.ExternalCommand2 ", ecc.

Questo non si ridimensionerà molto bene, ed è scomodo da cambiare, ma ti darà scorciatoie da tastiera per eseguire i test. Sembra che ci dovrebbe essere un modo molto più semplice di farlo.

È possibile utilizzare una macro VS per analizzare il file XML e quindi chiamare nunit.exe con l'argomento della riga di comando / fixture per specificare quali classi eseguire o generare un file di salvataggio di selezione ed eseguire nunit usando quello.

Non l'ho mai usato, ma forse potrebbe essere d'aiuto ....

http://www.codeplex.com/VS2008UnitTestGUI

" Descrizione del progetto Questo progetto riguarda l'esecuzione di tutti i test unitari all'interno di più assembly .NET Unit test codificati con Visual Studio 2008. "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top