Frage

Grundsätzlich möchte ich das Nunit -Plugin für TeamCity (das Programm, nicht unbedingt den spezifischen Build -Schritt verwenden) verwenden, um meine Unit -Tests mit NCOVER für die Codeabdeckung auszuführen. Da meine Unit -Tests Typemock 6 verwenden, brauche ich das auch Arbeiten.

Bisher habe ich versucht:

  • Im Grunde genommen richten Sie die Teamcity Nunit-Build-Schritt auf meine DLLs, aber das schlägt mit der folgenden Fehlermeldung fehl:

    Der Typemock -Isolator muss mit dem Abdeckungswerkzeug verknüpft werden, um eine der folgenden zu aktivieren:

    1. Verknüpfen Sie das Abdeckungswerkzeug über die Typemock -Isolator -Konfiguration
    2. Führen Sie Tests über tmockrunner.exe -link aus
    3. Verwenden Sie Typemockstart -Aufgaben für MSBuild oder Nant mit Link
  • Als ich versuchte, die richtige Befehlszeile herauszufinden, habe ich Folgendes ausprobiert:

    C: ... Isolator 6.0 tmockrunner.exe "c: teamCity ... jetbrains.buildserver.nunitlauncher.exe" v4.0 MSIL Nunit-2.5.9 MyAssembly.dll

    Dies schlägt mit genau dem gleichen Fehler fehl.

  • Festlegen der Umgebungsvariablen in der mocking_on.bat Datei Teil von Typemock, dies ändert das Ergebnis nicht.

Beachten Sie, dass die obigen Beispiele (noch) keinen Verweis auf NCOver enthalten. Dies liegt daran, dass ich mich seit ein paar Stunden mit den obigen Beispielen in der Kommandozeile herumhackte und noch keine grundlegenden Einheitstests zum Laufen gebracht habe. NCOVER ist zusätzliche Optionen für den Nunit-Leiter der TeamCity. Ich hoffe, dass dies so einfach ist, als nur zu ermöglichen, wenn ich so weit komme.

War es hilfreich?

Lösung

Da Typemock erforderlich ist, dass Sie ein eigenes Läuferprogramm, Tmockrunner, verwenden, gibt es keine Möglichkeit, nur die GUI -Optionen in TeamCity zu verwenden, um alles einzurichten.

Stattdessen habe ich am Ende zuerst eine benutzerdefinierte MSBuild -Datei mit diesem Inhalt erstellt:

<?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>

Diese Datei speichere ich in einem Verzeichnis auf meinem TeamCity -Server. Da ich nicht wollte, dass das Testskript Teil meines Repositorys ist, habe ich es nicht zur Quellungsregelung hinzugefügt (ich kann Tests in Visual Studio erstellen und mit der rechten Maustaste klicken und ausführen, wenn ich etwas nicht so an meine gebunden bin Server erstellen Ich könnte diese Entscheidung später ändern). Außerdem habe ich nur 1 Build-Agent für meinen TeamCity-Server, so dass dies vorerst für mich funktioniert.

Zusätzlich zur obigen Datei habe ich das folgende Batch-File hinzugefügt:

@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

Und dann habe ich meine Teamcity Build-Konfiguration die folgenden zwei Build-Steps hinzugefügt:

  1. Visual Studio -Lösung: Erstellen Sie die Debug -Konfiguration.
  2. Führen Sie C: dev sqldatabases Tests.bat (die obige Stapeldatei) aus.

Das habe ich dafür gesorgt coverage.zip wurde unter Artefakten in meiner Build -Konfiguration aufgeführt, und jetzt bekam ich Codeabdeckung, Typemock und Unit -Tests.

Ich habe nur nicht herausgefunden, wie ich so weit gekommen bin, dass ich, wenn ich auf das Build -Ergebnis einer Build -Konfiguration klicke, die die normale Teamcity -GUI zum Einrichten von allem (minus Typemock) verwendet, eine Code -Abdeckung kurzzusammenfassung aufgeführt. Dies ist im obigen Setup nicht vorhanden, aber der vollständige Bericht ist und die Registerkarte in den Teamcity Build -Ergebnissen.

Hoffentlich kann dies jemand anderem Probleme ersparen.

Andere Tipps

Lasse,

Solange Sie die TeamCity -GUI verwenden, sollte es einfach nur eine einfache Frage der Auswahl sein, um damit zu laufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top