Domanda

Fondamentalmente vorrei utilizzare il plug -in NUNIT per TeamCity (il programma, non necessariamente il passaggio di build specifico per eseguire i miei test unitari, con NCOVER per la copertura del codice, e poiché i miei test unitari utilizzano Typemock 6, ne ho bisogno anche io ne ho bisogno Lavorando.

Finora ho provato:

  • Fondamentalmente indicando il build-step di TeamCity NUNIT alle mie DLL, ma questo fallisce con il seguente messaggio di errore:

    L'isolatore di typemock deve essere collegato con lo strumento di copertura da eseguire, per consentire uno dei seguenti:

    1. Collegare lo strumento di copertura tramite la configurazione dell'isolatore di typemock
    2. Esegui test tramite TMockrunner.exe -Link
    3. Utilizzare le attività TypeMockStart per MSBuild o Nant con collegamento
  • Cercando di capire la riga di comando giusta, ho provato questo:

    C: ... isolator 6.0 tmockrunner.exe "C: teamCity ... jetbrains.buildserver.nunitlauncher.exe" v4.0 MSIL NUNIT-2.5.9 myassembly.dllllll

    Questo fallisce con lo stesso identico errore.

  • Impostazione delle variabili di ambiente trovate in mocking_on.bat File parte di Typemock, questo non cambia il risultato.

Si noti che gli esempi di cui sopra non contengono alcun riferimento a NCOVER (ancora), è perché ho ottenuto la riga di comando per un paio d'ore con gli esempi di cui sopra e non ho ancora ottenuto i test di base in esecuzione. NCOVER sono opzioni extra per la NUNIT-Luncher di TeamCity, quindi spero che questo sia semplice come abilitare che quando arrivo così lontano.

È stato utile?

Soluzione

Poiché TypeMock richiede di utilizzare il proprio programma di corridore, TMockrunner, non c'è modo di utilizzare le opzioni GUI in TeamCity per impostare tutto.

Invece, quello che ho finito per fare è stato prima creare un file MSBuild personalizzato con questo contenuto:

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

Questo file salvo in una directory sul mio server TeamCity. Dal momento che non volevo che lo script di prova facesse parte del mio repository, non l'ho aggiunto al controllo di origine (posso costruire e fare clic con il tasto destro e eseguire test da Visual Studio, se ho qualcosa di così legato al mio Build Server potrei modificare quella decisione in seguito). Inoltre, ho solo 1 agente build per il mio server TeamCity, quindi questo funziona per me per il momento.

Oltre al file sopra, ho aggiunto il seguente file batch:

@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

E poi ho aggiunto i seguenti due passi di build alla mia configurazione di build TeamCity:

  1. Soluzione Visual Studio: crea la configurazione del debug.
  2. Eseguire c: dev sqldatabase tests.bat (il file batch sopra)

Mi sono assicurato coverage.zip è stato elencato in artefatti nella mia configurazione di build e ora ho ottenuto test di copertura del codice, typemock e unità.

L'unica cosa che non ho capito come arrivare finora è che se faccio clic sul risultato di build di una configurazione di build che utilizza la normale GUI di TeamCity per impostare tutto (meno tipomock), ottengo un breve riepilogo della copertura del codice elencato, Questo non è presente nella configurazione sopra, ma il rapporto completo è e la scheda nei risultati di build di TeamCity.

Spero che questo possa salvare qualcun altro qualche problema.

Altri suggerimenti

Lasse,

Fintanto che stai usando la GUI TeamCity, correre con la copertura NCOver dovrebbe essere solo una semplice questione di selezione di correre con esso. Non ho mai provato a gettare Typemock nel mix, quindi non vedo l'ora di sentire come va.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top