NUnit(およびMSTest)は、静的/共有変数を変更するテストをどのように処理しますか?
-
03-07-2019 - |
質問
共有ゲートウェイパターンを使用して制御コンテナの反転を実装するコードがいくつかあります。このIOCを使用するコードを実行する数百のNUnitユニットテストがあります。それらはすべて(私のマシンで!)動作しますが、これらのテストは負荷がかかると失敗する可能性があります。 NUnit(およびMSTest)は複数のスレッドでテストを並行して実行しようとすることを覚えているようですが(これは間違いなく静的/共有ゲートウェイで競合状態を引き起こします)、実際に何が起こるかを説明するドキュメントは見つかりません。私の経験では、NUnitは順次テストを実行しているようです。私の質問は、NUnit(またはMSTest)が単体テストを並行して実行することはありますか?もしそうなら、どのような条件下で?そして、何らかの設定オプションでこれをオフにできますか?
解決
更新:
Visual Studio 2010では、テストを並行して実行する機能が導入されました。
MsTest:
Microsoft Visual Studio Team SystemのDavid Williamsonによると、この投稿のMSDNフォーラム:
テストは絶対に実行されません VSまたは経由で実行する場合は並列 mstest.exe。で実行される場合 VSを介した負荷テスト 別の話。基本的な実行、 ただし、常にシリアルです。
また、MsTestを使用して実行されるテストは、テストごとにクリーンな状態を維持するために、それぞれ異なるスレッドを使用して実行されます。この動作を無効にする方法はありません。
NUnit:
NUnitはすべてのテストを同じスレッドで実行します。