2012-04-10 28 views
2

TFS 2010を使用してソリューションを構築し、単体テスト(MSTest)を実行しています。すべて正常に動作するために使用され、私たちのビルドはすべての単体テストが成功したときに成功しました。MSTestが失敗し、 '結果ファイルが存在しません。パブリッシュに失敗しました。

ただし、テストプロジェクトを.Net 4に更新すると、すべてのビルドが失敗し、 '結果ファイルが存在しません。パブリッシュに失敗しました。これはすべてのテストが合格しても発生します。

http://support.microsoft.com/kb/983504をインストールしてみました。

診断ログを使用してMSTestを実行すると、膨大なファイルが作成されますが、ログにエラーメッセージは含まれません。私は少し面白いだけの行は

TestFormatsConverter.LoadAsCurrentVersionです:<サービス> 2012-03-28 09_51_49_Any CPU_Debug.trx tfsservice_ <path_to_build> \ TestResults \は、すでに現在のファイル形式です。

更新されていない古いソリューションは引き続き成功します。

更新

ビルド中にビルドマシン上でビルドフォルダを観察した後、私は失敗ソリューションの.trxファイルがTestResultsフォルダに作成されていないことに気づきました。古いソリューションの場合、ファイルが作成されます。 .Net 4にアップグレードすると、.trxファイルが作成されない可能性があります。

答えて

3

結局のところ、この問題の解決策がありました。

実際には、MSTestは2回実行されます。 MSTest 10で1回、MSTest 9で1回。最初の実行では、すべての.Net 4テストプロジェクトがカバーされ、想定されているテスト結果が作成され、公開されます。

しかし、ソースにはMicrosoft.Reactive.Testing.dllという名前の.NET 2アセンブリも含まれています。このアセンブリは、Reactive Framework(1.0.10621)用の最新の(.Net 4)インストーラに含まれています。 MSTest 10は.Net 2テストを実行できないため、別のテストが開始されます。

残念ながら、Microsoft.Reactive.Testing.dllは名前に "test"が含まれているためテスト実行にのみ含まれています。実際には単体テストは含まれていません。したがって、テストは実行されず、結果ファイルも作成されず、結果ファイルも公開できません。

解決策は簡単です。Microsoft.Reactive.Testing.dllの.Net 2バージョンを.Net 4バージョンと交換してください。これはNuGetを使用してダウンロードできます。

関連する問題