12

Ci viene richiesto di passare da NUnit a MSTest e ora è necessario convertire tutti i test esistenti nella nuova piattaforma. La maggior parte è convertita bene ma abbiamo un problema con i test parametrizzati. Abbiamo trovato il seguente sito Web che mostra come scrivere un'estensione e scaricato il codice per esso.Test unitario - Estensione del tipo di test dell'unità Visual Studio - Non funziona

http://blogs.msdn.com/b/vstsqualitytools/archive/2009/09/04/extending-the-visual-studio-unit-test-type-part-2.aspx

Tuttavia, anche se si compila bene, il test RowTestClass tutto non riescono a correre con il seguente messaggio di errore:

"Impossibile inizializzare l'estensione unit test 'urn: RunAsTestClassAttribute': A l'estensione di test dell'unità non è registrata per il seguente attributo: Microsoft.VisualStudio.Test.Sample.UnitTestTypeExtension.RunAsSample.RunAsTestClassAttribute. "

Stiamo usando VS2010 (10.0.40219.1 SP1Rel) (Microsoft .NET Framework versione 4.0.30319 SP1Rel)

Mi chiedo se ha qualcosa a che fare con le seguenti librerie:

Microsoft.VisualStudio.QualityTools.Common.dll 
Runtime Version: v2.0.50727 

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.Common.dll 

Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 
Runtime Version: v4.0.30319 

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 

Microsoft.VisualStudio.QualityTools.Vsip.dll 
v4.0.30319 

C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.QualityTools.Vsip\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.QualityTools.Vsip.dll 

Qualsiasi aiuto per ottenere questo funzionamento è molto apprezzato.

+0

Perché è necessario passare un parametro nel metodo di test dell'unità? –

+0

Fondamentalmente non dover ripetere lo stesso codice per ogni parametro di test. Mantiene pulito il codice evitando di dover utilizzare la logica come loop con istruzioni if ​​o switch o creando dipendenze a file o database esterni. – ArchiFactor

+0

Avrei il metodo di prova chiamare un altro metodo non test che accetta i parametri e fa le asserzioni appropriate. –

risposta

1

Avete registrato i nuovi tipi (nello Windows Registry)? C'è una sezione su come farlo in the tutorial - dare un'occhiata a Estensione test tipo riga: registrare l'estensione del tipo di test.

In caso di problemi, provare a scaricare il codice completo + le chiavi di registro da MSDN code gallery.

1

Si consiglia di esaminare SpecFlow per rendere i parametri più parametrizzati. È tradizionalmente uno strumento BDD, ma ti permetterà di fare passi riutilizzabili che prendono parametri.

Ad esempio è possibile creare un passaggio dicendo

"Given the user 'admin' exists." 

e sul lato C# si ottiene un metodo come questo:

[Given(@"the user '(.*)' exists"] 
public void GivenTheUserExists(string name) 
{ 
    //create the user 
} 

Andando avanti è possibile riutilizzare il passo in qualsiasi "file della caratteristica "senza dover riscrivere l'implementazione di quel passaggio.

+1

In che modo risponde alla domanda originale? Stai solo facendo pubblicità a Specflow? – AdrianHHH

+0

Stavo fornendo una soluzione apparentemente meno complessa per parametrizzare i test unitari. Se questo è pubblicizzare uno strumento gratuito, allora sì lo sto pubblicizzando. – bobby