2017-05-28 3 views
1

J'ai un projet avec des classes et des méthodes que je veux tester. J'ai un autre projet avec les méthodes de test qui vont tester les méthodes de mon projet principal.Lorsque j'exécute les tests de couverture, j'obtiens la couverture du code des méthodes de tests, pas la couverture des méthodes que je veux tester

J'exécuter les tests avec opencover et je produis les rapports avec reportgenerator, avec ce que j'ai commandes dans un fichier .bet:

..\tools\OpenCover.Console.exe -register:user -target:"C:\myDllWithTests.dll" -output:"c:\coverage\opencovertests.xml" 

.\ReportGenerator.exe "-reports:c:\coverage\opencovertests.xml" "-targetdir:c:\coverage\opencovertests.xml\reports" 

J'utilise MSTest pour les tests.

Le problème est que dans le rapport html, je vois que le code qui est couvert est les méthodes de tests, pas les méthodes dans mon projet principal de test.

Comment puis-je ajouter les méthodes principales dans le résultat?

Merci.

Répondre

1

Dans l'argument target, l'argument OpenCover transmet le chemin à MSTest (par exemple, "C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ mstest.exe") et spécifie vos assemblages de test (par ex. \ myDllWithTests.dll ") dans targetargs argument.

Pour supprimer les ensembles de test des statistiques de couverture de code, spécifiez-les dans filter argument. Ci-dessous la commande OpenCover qui fonctionne bien pour moi. Ici le code sous test est placé dans SampleApp.dll et le code de test est placé dans SampleApp.Tests.dll.

.\OpenCover.Console.exe -register:user -mergebyhash -target:"c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" -targetargs:"/testcontainer:\"d:\test\SampleApp\SampleApp.Tests\bin\Debug\SampleApp.Tests.dll\"" -output:UTResults.xml -filter:"+[SampleApp*]* -[SampleApp.Tests]*" 

rapport de résultat ne contient que les statistiques pour l'assemblage SampleApp.dll, SampleApp.Tests.dll est exclu:

enter image description here

Cocher cette answer pour quelques détails. Il existe également un great article par Allen Conway sur l'utilisation de OpenCover & ReportGenerator pour les projets .Net.

+0

J'ai essayé d'ajouter les targetargs, mais le résultat est le même. A propos de l'article, je le savais, mais il n'a pas offert le code source, et j'ai le doute si les tests sont dans la même DLL que le code principal ou est une autre DLL. Dans mon cas, le problème est que je n'ai que la couverture de l'ensemble de test et non de l'assemblage principal. –

+0

J'ai essayé avec ce filtre: -filter: "+ [\ *] \ * - [\ * Tests] \ *" -mergebyhash mais il n'inclut pas le fichier main.dll qui se trouve dans le même dossier que le test. dll. Aussi, j'ai essayé avec le nom complet de la DLL principale et encore ça ne fonctionne pas. –

+0

Peut être le problème n'est pas avec OpenCover, mais avec les tests lui-même. Quelle est la sortie de MSTest? Voyez-vous des statistiques sur les tests exécutés, par ex. "1/1 test (s) réussi (s)"? – CodeFuller