2

TFS 2010 を使用してソリューションを構築し、単体テスト (MSTest) を実行しています。以前はすべてが正常に機能し、すべての単体テストに合格するとビルドが成功しました。

ただし、テスト プロジェクトを .Net 4 に更新した後、すべてのビルドが失敗し、「結果ファイルが存在しません」というエラー メッセージが表示されます。公開に失敗しました。」これは、すべてのテストに合格した場合でも発生します。

http://support.microsoft.com/kb/983504をインストールしようとしましたが、うまくいきませんでした。

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

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

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

アップデート

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

4

1 に答える 1

3

結局、この問題には解決策があったことがわかりました。

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

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

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

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

于 2012-04-13T12:26:00.453 に答える