2013-08-29 13 views
23

La mia soluzione è configurata con progetti denominati "Nome progetto" con "Nome progetto". Test contenenti i miei test unitari. Vorrei escludere i progetti di test dall'analisi della copertura del codice in VS 2012 (MS Test) e sono riuscito a farlo aggiungendo l'attributo ExcludeFromCodeCoverage a ciascuna classe di test come descritto here.Come escludere i progetti con nomi che terminano in ".Test" dall'analisi della copertura del codice in VS2012 Test unitari

Poiché il numero di classi di test è in crescita, sarebbe opportuno escludere l'intero gruppo di test. Voglio usare il file .runsettings descritto anche in quel collegamento MSDN ma non sembra che abbia avuto fortuna.

Ecco il mio file .runsettings:

<?xml version="1.0" encoding="utf-8"?> 
<RunSettings> 
    <DataCollectionRunSettings> 
    <DataCollectors> 
     <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
     <Configuration> 
      <CodeCoverage> 
      <ModulePaths> 
       <Exclude> 
       <ModulePath>.*tests.*</ModulePath> 
       <ModulePath>.*Tests.*</ModulePath>> 
       </Exclude> 
      </ModulePaths> 
      </CodeCoverage> 
     </Configuration> 
     </DataCollector> 
    </DataCollectors> 
    </DataCollectionRunSettings> 
</RunSettings> 

Questo si traduce in risultati vuoti generati per Code Coverage, se io commento fuori tutto il <Exclude> blocco ottengo copertura del codice in tutti i progetti della soluzione comprese le prove (come previsto, volevo solo assicurarmi che l'aggiunta del file runSettings non causasse problemi stessi).

Ho provato ad aggiungere in:

<Include> 
    <ModulePath>.*\.dll$</ModulePath> 
    <ModulePath>.*\.exe$</ModulePath> 
</Include> 

Ma ancora una volta, ottengo risultati vuoti. Ho avuto l'impressione che un blocco Includi vuoto (o inesistente) includa tutto per impostazione predefinita a meno che corrisponda al blocco Escludi, quindi non penso che sia strettamente necessario.

Qualcuno può indicarmi la giusta direzione? Vedo da this other question che non sono solo nel tentativo di escludere i test, ma mi piacerebbe farlo a livello di assembly e MSDN sembra suggerire che posso.

+0

Si tratta di una vittima di http://stackoverflow.com/questions/14458246/visual -studio-2012-using-runsettings-to-exclude-assemblies-from-code-coverage? rq = 1? – stackman

+0

@stackman No, non penso che lo sia, sto usando una serie di correzioni molto più semplice archiviandolo con le stesse stringhe di percorso suggerite da MSDN. – Dutts

+0

hai effettivamente provato a usare ... e ... allo stesso tempo? –

risposta

36

C'è una connessione con il problema del periodo come è stato menzionato here. Se si modifica la sezione escludere a questo

<ModulePath>.*tests.dll</ModulePath> 
<ModulePath>.*Tests.dll</ModulePath> 

o questo

<ModulePath>.*\.tests\..*</ModulePath> 
<ModulePath>.*\.Tests\..*</ModulePath> 

che funzionerà

+0

Mille grazie, questo è esattamente quello che cercavo. – Dutts

Problemi correlati