2011-02-01 5 views
3

基本的には、Teamcity用のNUnitプラグイン(プログラム、必ずしもそれを使用している特定のビルドステップではありません)を使用して単体テストを実行し、NCover with Code Coverageを使用したいと思います。あまりにも働いている。NCoverとTypeMockの両方を統合したNUnitテストをTeamCityで実行するには?

  • ちょうど基本的に私のdllのにチームシティーNUnitのビルドステップを指しているが、それは次のエラーメッセージで失敗します:

    は、これまでのところ私は試してみた

    Typemockアイソレータをする必要がありますカバレッジツールとリンクして、次のいずれかを有効にします。

    1. typemockアイソレータ設定によるカバレッジツールTMockRunner.exe経由
    2. 走行テストは、右のコマンドラインを把握しようとリンク
  • とMSBuildのかNAntのため

  • 使用TypeMockStartタスクを-link、私はこれを試してみました:

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

    これはまったく同じエラーで失敗します。

  • TypeMockのmocking_on.batファイル部分にある環境変数を設定しても、結果は変わりません。私は上記の例で時間のカップルのためのコマンドライン上で周りのハッキング、まだ持っていないしてきたので、それはだ

上記の例は(まだ)NCoverへの参照が含まれていないことに注意してください、基本的な単体テストを実行しています。 NCoverはTeamCityのnunit-launcherの追加オプションですので、これを実現するだけの簡単な方法だと思います。

+0

[TeamCity forums](http://devnet.jetbrains.net/community/teamcity/teamcity?view=discussions)でより多くの成功をおさめることができます。 – adrianbanks

答えて

4

TypeMockでは、独自のランナープログラムTMockRunnerを使用する必要があるため、TeamCityのGUIオプションを使用してすべての設定を取得する方法はありません。

代わりに、私が最初にこの内容でカスタムMSBuildのファイルを構築することだったやってしまった何を:

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

私はチームシティーサーバ上のディレクトリに保存し、このファイル。テストスクリプトを私のリポジトリの一部にしたくないので、ソース管理にそれを追加しませんでした(Visual Studio内でテストをビルドして右クリックして実行できます。サーバーを構築すると、後でその決定を変更する可能性があります)。また、TeamCityサーバー用のビルド・エージェントは1つしかありませんので、当分の間私のために動作します。上記のファイルに加えて

は、私は次のバッチファイルを追加しました:

@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 

をそして私は、私のチームシティーのビルド構成に次の2つのビルドステップを追加しました:

  1. のVisual Studio解決策:デバッグ構成を作成します。
  2. C実行します。私はcoverage.zipが私のビルド構成に成果物の下に表示されたことを確認しました、そして今私はコードカバレッジを持って、typemock \ Devの\ SqlDatabases \ Tests.bat(上記のバッチファイル)

をし、単体テスト。

私がこれまでに得る方法を理解できなかったのは、通常のTeamCity GUIを使用してすべての設定(マイナスタイプ・モック)を行うビルド構成のビルド結果をクリックすると、コード・カバレッジ上記のセットアップでは表示されませんが、完全なレポートがあり、TeamCityビルドのタブが表示されます。

これにより、他の人に何らかのトラブルを防ぐことができます。

0

ラッセ、

限り、あなただけのミックスにTypemockを投げて試したことがないit.I'veで実行するように選択するだけの簡単な作業をする必要がありますNCoverカバレッジを実行している、チームシティーGUIを使用しているようなので、私はそれがどうなるか聞くのを楽しみにしています。

+0

TypeMockではすべてを実行する必要があります。つまり、GUIでこれを行うことはできません。私はそれを行う方法を考え出して以来、私自身の答えを追加します。 –

関連する問題