2014-10-21 16 views
5

Voglio eseguire NUnit su TeamCity e generare report con dotCover. Ma per alcune ragioni non riesco a ottenere il rapporto sulla copertura per tutti i miei assemblee di progetto.TeamCity con dotCover non include tutti i miei assiemi nel report di copertura

TeamCity configurazione, come di seguito

Teamcity: 6.5.3 
NUnit: 2.5.10 
.NET Runtime: Platform: x86 
.NET Runtime: Version: v4.0 
dotCover: bundled with TC not customized 

Ho controllato che tutti i *.dll *.xml *.pdb file ci sono nella directory come previsto, come di seguito (DLL di riferimento non sono elencati)

MY.PROJECT.A.dll 
MY.PROJECT.A.pdb 
MY.PROJECT.A.xml 
MY.PROJECT.B.dll 
MY.PROJECT.B.pdb 
MY.PROJECT.B.xml 
MY.PROJECT.C.dll 
MY.PROJECT.C.pdb 
MY.PROJECT.C.xml 
MY.PROJECT.Test.dll 
MY.PROJECT.Test.pdb 
MY.PROJECT.Test.xml 

MY.PROJECT.Test .dll viene eseguito con NUnit e questo assembly è escluso nel report di copertura utilizzando il filtro * Test *. Ma solo il MY.PROJECT.A è nel rapporto di copertura dotCover mentre MY.PROJECT.B e MY.PROJECT.C non sono inclusi.

Ho controllato il registro ma non è stato trovato errore.

Ogni pensiero è molto apprezzato.

risposta

4

Infine, ho capito cosa sta succedendo e spero che questa risposta sia utile per coloro che stanno ancora lottando con questo o con un problema simile.

Fondamentalmente, dotCover include solo quegli assembly in realtà utilizzati (più precisamente, quegli assembly caricati da CLR) dai test nel report di copertura del codice.

Nel mio caso, solo MY.PROJECT.A è utilizzato da test, MY.PROJECT.B e MY.PROJECT.C non sono utilizzati da prove a causa di dipendenze esterne. e anche con le direttive using MY.PROJECT.B nei test, non conta come il lazy loading di CLR.

Un manichino soluzione per mostrare rapporto di copertura 0% per questi due gruppi è che o utilizzare qualsiasi cosa in assemblea nelle prove, o il carico forza queste assemblee chiamando System.Reflection.Assembly.Load("MY.PROJECT.B")

questione connessa: