亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

VisualStudio 2012で単体テストの実行が遅い場合の対処法

Visual Studio 2012以降、単体テストがMSTestオンリーから、NUnitやらxUnit.netをVisual Studioで統合して管理できるようになりましたね。その役目を担っているのがTest Adapterです。NUnitだとNUnit Test Adapterを使えば、完全に統合されて凄くハッピーです。

んが。

どうも僕の環境(Windows on VMWare Fusion)だと、えらく遅いのです、これ。最初はNUnit側の実装の問題かと思っていたのですが、MSTestでも遅くて一体これは何なんだとちょっと最近イライラしていたんですが。

もう一年近く前に回答が示されていました。。。

I had the same issue, using VS2012 Update 1. Based on the suggestion in http://social.technet.microsoft.com/Forums/en-US/winserverDS/thread/20eb50e9-3e68-4d29-bcdd-a4fc166b9c00 I disabled NetBios over TCP on my NIC. The tests now start up immediately, and procmon shows the time waiting on \MACHINE*\MAILSLOT\NET\NETLOGON dropped from 5 seconds to about 40 microseconds.

というわけで、言われるがまま、Networkの設定画面から、IPv4のプロパティ → 詳細設定 → WINSタブで「NetBios over TCPを無効」にチェック入れましょう。

f:id:posaunehm:20131009004716p:plain

僕はこれで解決しました。快適-!

ちなみに真の原因は・・・

ここに。

NetBiosの初期化のためになげるUDPパケットのタイムアウトが重なってこんな惨事になっているらしい。多分Fusion上のネットワークアダプタとか言う危なかっし環境だから起きたんだろ-なー。

まぁMacでWindows飼ってる人はなりがちなお話なので、お気をつけて。