2

リポジトリ コードを定期的にビルドし、ソリューションに含まれるテストを実行するように CruiseControl .net を構成しようとしています。svn サーバーからコードを取得し、パーツを構築するように構成しました。しかし、私はそれでテストを実行できません。MSBuild はそれについて不平を言い続けています。

エラー MSB4057: ターゲット "テスト" がプロジェクトに存在しません。

また、コマンドラインからテストを実行して、同じエラーで機能するかどうかを確認しました。私が使用した: MSBuild.exe TestProject.csproj /t:Test

私の構成は次のようなものです:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>C:\WorkingDir\build\MainProject</workingDirectory>                
        <projectFile>MainProject.csproj</projectFile>
        <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
        <targets>Build</targets>
        <timeout>900</timeout>
        <logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
    </msbuild>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>C:\WorkingDir\build\TestProject</workingDirectory>                
        <projectFile>TestProject.csproj</projectFile>
        <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
        <targets>Test</targets>
        <timeout>900</timeout>
        <logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
    </msbuild>  
    </tasks>

正しい方向へのヒントをいただければ幸いです。

4

1 に答える 1

3

ここで非常に重要な、使用しているテスト フレームワークについて説明していません。

MSTest の場合、この呼び出しは TFS の一部です[ランナーは Visual Studio の一部であるため、MSTest を実行するタスクを .NET Framework の一部である MSBuild の一部にすることはできません。これも理由です。 MSTest は [2010 年には、Visual Studio のサブセット] をビルド サーバーにインストールすることを強制します (このトピックについては、いくつかの質問があります)]

xUnit.netの場合、人々はこのようなことをします

NUnit には、ファイルのリストを提供できるタスクがあります。

結論 - 1 つは、Test カスタム ターゲットを .csproj ファイルに追加します。これにより、テスト ランナーを呼び出すための重要な MSBuild ラッパー タスクがトリガーされます。

于 2010-08-12T06:10:26.973 に答える