web-dev-qa-db-ja.com

単体テストプロジェクトがビルドサーバーからビルドされない

私のVS2010ソリューションにはテストプロジェクトが含まれています。単体テスト自体は、次の名前空間を参照します。

using Microsoft.VisualStudio.TestTools.UnitTesting;

私のPCの次のアセンブリからアクセスします。

Assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\
    PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

PCでソリューションを構築するとき、問題はありません。テストは正常にビルドおよび実行されます。

ビルドサーバーでビルドを開始するために使用できるイントラネットページがあります。このページからビルドすると、ビルドは次のエラーで失敗します。

Generator.cs(3,17): error CS0234: The type or namespace name 'VisualStudio' 
does not exist in the namespace 'Microsoft' (are you missing an Assembly
reference?)

明らかな問題は、Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll上記のビルドサーバーには存在しません。これはVS2010でインストールされると思いました。私のソリューションのプロジェクトは、.NET 4.0ターゲットをビルドするため、ビルドサーバーにインストールされると思います。

これを解決する最も簡単な方法は何ですか?ビルドサーバーは私の管轄外であり、新しいライブラリをインストールするジョブをログに記録したくありません。

27

.UnitTestFramework.dllはC:\ Program Files ...フォルダーにあり、参照があります。

  1. ソース管理下にディレクトリを作成します。ソース/バイナリ
  2. 上記のdllをソース/バイナリにコピーします
  3. ユニットテストアセンブリから.UnitTestFramework.dllへの参照を削除します。
  4. .UnitTestFramework.dllへの参照を単体テストアセンブリに追加しますが、今回は現在Source/Binariesの下にあるdllを選択します

その後、変更をチェックインして(Source/Binariesフォルダーがチェックインされていることを確認してください)、ソリューションをビルドできます。ビルドサーバーがソリューションをビルドするとき、ソース管理からdllを取得する必要があります。

25
Toni Parviainen

私とVisualStudio2010ソリューションの具体的な答えは次のとおりです。

  1. Visual Studio Agents 201 から「Test Agent 2010」をインストールします
  2. Windowsを再起動します
  3. インストール Visual Studio 2010 Service Pack 1
  4. Windowsを再起動します
  5. プロジェクトの参照が "10.0.0.0"ではなく "Microsoft.VisualStudio.QualityTools.UnitTestFramework" "10.1.0.0"を指すように更新されていることを確認します。
12
Dean Taylor