最近遇到的一個坑爹的問題,就是發現 visual studio 的測試總管中,沒有顯示我的測試方法,像下圖一樣,甚麼都沒有。

我試著執行測試,是可以執行的,只是也沒有顯示任何測試結果。一開始我先在 google 盲目搜尋,找了一些解法。
例如安裝 MSTest.TestAdapter,沒用,這個解法是要解決 VS「找不到」測試方法的問題,但我發現我的 VS 的 log 顯示它有找到我的測試方法,但就是沒顯示出來。
還有說刪除 %LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache 路徑就好的,也是沒用。
然後我發現 VS 會顯示一個錯誤,看起來跟測試有關。

就以這個組件名稱當關鍵字搜尋,然後就找到 microsoft forums 的一篇討論,這裡有人也遇到一樣的問題,而且他的 VS 版本跟我一模一樣,我也是 14.0.25424.00 Update 3。

這個人他說了,他發現這個問題只有在非英文版的 VS 才會出現,他裝的是德文版,而且只要把 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\de
目錄改名,問題就解了。
我裝的是中文版 VS,在我的電腦中,路徑是C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\zh-Hant
。
這個資料夾裡面放了很多 Microsoft.VisualStudio.TestWindow 開頭的 dll,而且從資料夾的名稱和路徑看起來,這裡面應該是用來支援不同語言包的測試相關的組件。我試著把資料夾改名,的確測試總管就找到我的測試方法了,不過 UI 變成英文的。

到這裡整個情況就很清楚了,原本我的測試總管沒有顯示測試方法,是因為 VS 預設安裝的測試總管用來顯示中文介面的語言包組件有問題,把資料夾改名了之後,他用回英文的語言包組件,就可以正常顯示了。
本來這樣也是可以用了,但這個討論串裡有個好心人把各種語言的正確語言包組件附上了,為了怕這樣的好東西之後連結失效不能用了,我也放到我的 blog 中。
下載連結
出問題的就是 Microsoft.VisualStudio.TestWindow.Core.resources.dll,我將上面語言包 CHT 內的 dll 覆蓋掉 VS 預設安裝的,測試總管就可以正常顯示,而且是中文介面。

至於該討論串中微軟的人後來提供的解法,也就是移除 KB3165756 (visual-studio-2015-update3),我就沒試了,因為從這個 KB 名稱來看,移除就是把整個 update 3 移除了,可能會移掉一些有用的東西。