Question

En fait, je voudrais utiliser le plugin NUnit pour TeamCity (le programme, pas nécessairement l'étape de construction spécifique utilisant) pour exécuter mes tests unitaires, avec NCover pour la couverture de code, et que mes tests unitaires usages Typemock 6, I nécessité que le travail aussi.

Jusqu'à présent, j'ai essayé:

  • Juste essentiellement pointant vers le TeamCity NUnit construire étape à mon dll, mais échoue avec le message d'erreur suivant:

    Typemock Isolateur doit être liée à la couverture d'outils pour exécuter, pour permettre une des opérations suivantes:

    1. relier l'outil à travers la couverture de configuration Typemock Isolator
    2. effectuer des tests via TMockRunner.exe -link
    3. utilisez des tâches de TypeMockStart pour MSBuild ou NAnt avec Link
  • Essayer de comprendre la ligne de commande à droite, j'ai essayé ceci:

    C: ... \ Isolateur \ 6.0 \ TMockRunner.exe "C: \ TeamCity ... \ JetBrains.BuildServer.NUnitLauncher.exe" v4.0 MSIL NUnit-2.5.9 MyAssembly.dll

    échoue avec exactement la même erreur.

  • Définition des variables d'environnement trouvées dans la partie du fichier mocking_on.bat de Typemock, cela ne change pas le résultat.

Notez que les exemples ci-dessus ne contient aucune référence à NCover (encore), que parce que je l'ai piraté autour de la ligne de commande pour quelques heures avec les exemples ci-dessus et ont toujours pas obtenu UNIT- de base l'exécution des tests. NCover est des options aux nunit-lanceur TeamCity donc j'espère que ce sera aussi simple que permettant que quand je suis loin.

Était-ce utile?

La solution

Depuis Typemock vous oblige à utiliser leur propre programme de coureur, TMockRunner, il n'y a aucun moyen de simplement utiliser les options de l'interface graphique de TeamCity pour obtenir tout mis en place.

Au lieu de cela, ce que je fini par faire était d'abord construire un fichier msbuild personnalisé avec ce contenu:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <TypeMockLocation>C:\Program Files (x86)\TypeMock\Isolator\6.0</TypeMockLocation>
        <NUnit>"C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe"</NUnit>
        <NCover>C:\Program Files (x86)\NCover\NCover.Console.exe</NCover>
    </PropertyGroup>
    <Import Project="$(TypeMockLocation)\TypeMock.MSBuild.Tasks"/>
    <Target Name="TestWithTypeMock">
        <TypeMockStart Link="NCover3.0" ProfilerLaunchedFirst="true" Target="2.0"/>
            <Exec ContinueOnError="true" Command="$(NUnit) v2.0 x86 NUnit-2.5.9 SqlDatabases.Core.Tests\bin\Debug\SqlDatabases.Core.Tests.dll SqlDatabases.SqlServer.Tests\bin\Debug\SqlDatabases.SqlServer.Tests.dll /ncover:%22$(NCover)%22 /ncover-arg://ias /ncover-arg:SqlDatabases.Core /ncover-arg://ias /ncover-arg:SqlDatabases.SqlServer /ncover-arg://et /ncover-arg:.*Exception /ncover-arg://x /ncover-arg:c:\temp\coverage.xml"/>
        <TypeMockStop/>
    </Target>
</Project>

Ce fichier j'enregistrer dans un répertoire sur mon serveur TeamCity. Comme je ne voulais pas le script de test pour faire partie de mon dépôt, je ne l'ai pas l'ajouter au contrôle de source (je peux construire et faites un clic droit et exécuter des tests à partir de Visual Studio, si je reçois quelque chose de pas lié à mon serveur de build que je pourrais changer cette décision plus tard). De plus, je n'ai que 1 build-agent pour mon serveur TeamCity si cela fonctionne pour moi le moment.

En plus du fichier ci-dessus, j'ai ajouté le lot fichier suivant:

@echo off
setlocal
set CURDIR=%CD%
copy c:\dev\sqldatabases\tests.msbuild .\
msbuild tests.msbuild /target:TestWithTypeMock
rd /s /q c:\dev\sqldatabases\codecoverage
md c:\dev\sqldatabases\codecoverage
"c:\program files\ncover\ncover.reporting.exe" c:\temp\coverage.xml //or FullCoverageReport:Html:c:\dev\sqldatabases\codecoverage
cd \dev\sqldatabases\codecoverage
del %CURDIR%\coverage.zip
7z a -r %CURDIR%\coverage.zip

Et puis j'ajouté les deux build étapes suivantes pour ma configuration de build TeamCity:

  1. Solution Visual Studio. Créer la configuration de débogage
  2. Exécuter C: \ Dev \ SqlDatabases \ Tests.bat (le fichier de commandes ci-dessus)

je me suis assuré que coverage.zip a été répertorié sous des artefacts dans ma configuration de construction, et maintenant je me suis couverture de code, Typemock et tests unitaires.

La seule chose que je n'ai pas compris comment obtenir est si loin que si je clique sur le résultat de la construction d'une configuration de construction qui utilise l'interface graphique TeamCity normale pour la mise en place tout (moins Typemock), je reçois un court de couverture de code récapitulatives, ce n'est pas présente dans la configuration ci-dessus, mais le rapport complet est, et l'onglet dans les résultats de construction de TeamCity.

Espérons que cela peut sauver quelqu'un d'autre quelques problèmes.

Autres conseils

Lasse,

Tant que vous utilisez l'interface graphique TeamCity, en cours d'exécution avec une couverture NCover devrait juste être une simple question de sélection à courir avec it.I've n'a jamais essayé de jeter Typemock dans le mélange, donc je suis impatient d'entendre comment cela va.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top