2012-02-20 20 views
7

Desidero escludere alcuni test dalla mia build di integrazione continua ma non ho trovato un modo per farlo.Esclusione test da tfs build

Una delle cose che ho provato era impostare la priorità di quei test a -2 e poi sulla build ho specificato Minimum Test Priority = -1 ma ancora esegue quei test.

Qualsiasi aiuto sarebbe molto apprezzato.

+0

Qual è il tuo tester? MSTest, NUnit, qualcos'altro (?) – pantelif

risposta

9

Invece di utilizzare "elenchi di test" che sono stati descritti, è necessario utilizzare il metodo "Categoria test". Le liste di test & Le funzionalità VSMDI sono state deprecate in Visual Studio 2010 e Microsoft potrebbe rimuovere completamente la funzionalità in una versione futura di Visual Studio.

Se vuoi qualche informazione in più su come utilizzare le categorie di test in particolare con il processo di generazione automatica, controllare questo post del blog: http://www.edsquared.com/2009/09/25/Test+Categories+And+Running+A+Subset+Of+Tests+In+Team+Foundation+Server+2010.aspx

È inoltre possibile escludere le categorie di test l'esecuzione specificando il ! (esclamazione punto) carattere davanti al nome della categoria per definire ulteriormente il filtro.

+0

Sul mio build CI sto utilizzando "! Integration &! Load" – felickz

3

Se si utilizza MSTest è possibile creare un Test List per i test necessari nell'integrazione continua.

+0

Non sapevo di questa funzione. Apre un nuovo mondo di possibilità. Grazie! – Yag

+0

per una configurazione di configurazione samle su come eseguire questa operazione con le build del team TFS 2008, vedere il post seguente. Per TFS 2010, la definizione di build è basata sul flusso di lavoro, ma il principio è lo stesso. – eFloh

+2

FYI - l'approccio "Elenco test" (utilizzando i file .VSMDI) è stato deprecato e non è più consigliato per l'uso. Invece dovresti usare la funzione Categorie test per MSTest. Microsoft potrebbe rimuovere completamente la funzionalità dell'elenco di test in una versione futura di Visual Studio. Ho altre informazioni disponibili qui se sei interessato: http://www.edsquared.com/2009/09/25/Test+Categories+And+Running+A+Subset+Of+Tests+In+Team+Foundation+ Server + 2010.aspx –

0

La mia preferenza sarebbe come sopra utilizzando una lista di test, ma alcune persone hanno emesso fusione/modifica dei file vsmdi ... Finiamo con soluzioni separate e usiamo una corrispondenza di modello per eseguire tutti i test nella DLL appropriata.

2

Con MSTest, è possibile semplicemente creare due progetti di test (assiemi) e specificarne uno solo nella configurazione di configurazione da utilizzare per il test. In MSBuild, questa era la strada da percorrere. Per le nuove definizioni WF-Based costruire, io attualmente non ho un campione a portata di mano:

<ItemGroup> 
    <!-- TEST ARGUMENTS 
    If the RunTest property is set to true then the following test arguments will be used to run 
    tests. Tests can be run by specifying one or more test lists and/or one or more test containers. 

    To run tests using test lists, add MetaDataFile items and associated TestLists here. Paths can 
    be server paths or local paths, but server paths relative to the location of this file are highly 
    recommended: 

     <MetaDataFile Include="$(BuildProjectFolderPath)/HelloWorld/HelloWorld.vsmdi"> 
      <TestList>BVT1;BVT2</TestList> 
     </MetaDataFile> 

    To run tests using test containers, add TestContainer items here: 

     <TestContainer Include="$(OutDir)\AutomatedBuildTests.dll" /> 
     <TestContainer Include="$(SolutionRoot)\TestProject\WebTest1.webtest" /> 
     <TestContainer Include="$(SolutionRoot)\TestProject\LoadTest1.loadtest" /> 

    Use %2a instead of * and %3f instead of ? to prevent expansion before test assemblies are built 
    --> 
</ItemGroup> 

<PropertyGroup> 
    <RunConfigFile>$(SolutionRoot)\LocalTestRun.testrunconfig</RunConfigFile> 
</PropertyGroup> 

Suggerimento: per utilizzare una definizione di compilazione generica, chiamiamo tutti i nostri progetti di prova "AutomatedBuildTests", vale a dire non c'è differenza di soluzione. Quindi la definizione di build può essere inclusa in qualsiasi definizione di build esistente (o anche essere comune) che esegue sempre il giusto set di test. Sarebbe un compito facile anteporre un controllo "se esiste" per consentire a una definizione di build di eseguire solo i test quando è presente un assieme di test. Non lo usiamo per ottenere errori di compilazione quando nessun assembly di test è stato trovato poiché vogliamo assolutamente test con tutte quelle build che usano questa definizione.

0

In Visual Studio 2012 e versioni successive è possibile configurare la definizione di build utilizzando l'impostazione Test case filter.

Questa impostazione è parte della definizione della build. Apre la definizione di build e passa alla scheda Process. Nella sezione 3. Test è possibile definire le fonti di test multiple. Per ciascuna fonte di test è possibile specificare un numero Test case filter.

È possibile trovare i dettagli in questo articolo di MSDN: Running selective unit tests in VS 2012 RC using TestCaseFilter

Ho copiato gli operatori supportati e alcuni esempi di questo articolo:

operatori supportati in RC sono:

1. = (è uguale a)

2.!= (Non uguale)

3. ~ (contiene o substring solo per valori di stringa)

4. & (e)

5. | (O)

6.() (paranthesis per raggruppamento)

expresssion può essere creato utilizzando questi operatori come qualsiasi condizione logica valida. & (e) ha una precedenza superiore a | (o) durante la valutazione dell'espressione.

E.g.
"TestCategory = NAR | Priority = 1" "! Proprietario = Vikram & TestCategory = UI" "FullyQualifiedName ~ NameSpace.Class"
"(TestCategory = UI & (Priority = 1 |! Priority = 2)) | (TestCategory = UI & Priority = 1)"

Un'altra possibilità sarebbe quella di avere alcune fonti di prova in una definizione di compilazione in un certo (cioè più o meno) le fonti di prova in altre definizioni di compilazione.

Problemi correlati