5

1000 程度のテストを含む NUnit テスト プロジェクトがあります。このプロジェクトには、主にカスタム WPF コントロール用の高レベル コンポーネント テストが含まれています。テスト プロセスは、ビルド サーバー (TeamCity) で頻繁に失敗します。

InvalidOperationException "LocalDataStoreSlot ストレージが解放されました"

mscorlib.dll!System.LocalDataStore.GetData(System.LocalDataStoreSlot スロット)

mscorlib.dll!System.Threading.Thread.GetData(System.LocalDataStoreSlot スロット)

WindowsBase.dll!System.Windows.Interop.ComponentDispatcher.CurrentThreadData.get() ...

テストには [RequiresSTA] 属性、Window.Show()、Dispatcher 操作などが含まれているため、通常の単体テスト プロジェクトではありません。

失敗は完全にランダムに見えます。80% の確率で発生するリビジョンがありますが、ほとんどの場合、まったく発生しません。xaml コードでスタイルを変更するなど、製品コードの非常に不思議な、時には単純な変更が失敗を引き起こし、製品コードの次の変更でそれが修正されます。

この特定のランダムな失敗は、開発者チームをかなり動揺させることがあります。拡張ビルド システムは、この失敗によって深刻な障害を受けています。

nunit-console.exe を使用してプロジェクトをローカルで実行すると、ほとんど再現できませんでした。

このようなテスト プロセスの失敗を見たことがありますか? この問題を解決するためのヒントをいただければ幸いです。

ありがとう

4

1 に答える 1

1

私たちの環境 (Jenkins、Windows 8、NUnit 2.6.3) でまったく同じ問題が発生しました。

これらの対策により、問題が修正されました。

  1. NUnit が .NET 3.5 以前で実行されていないことを確認します。この投稿では、その方法について説明します。
  2. NUnit ランナー コマンド ライン オプションを使用して、シャットダウン時の NUnit クラッシュを回避します/nothreadMS Build Community Tasksを使用している場合は、タスクのTestInNewThread属性をに設定する必要があります。NUnitfalse

クラッシュの性質に関する背景情報については、このMSDN フォーラム スレッドを参照してください。最終的に、これは NUnit で修正する必要があります。

于 2015-03-25T12:01:29.530 に答える