2012-11-02 245 views
18

每當我試圖從我的測試套件中的Visual Studio 2012,我得到運行任何測試的單元測試問題在Visual Studio 2012

測試失敗 - [測試方法名稱]

消息:失敗設立執行上下文運行測試

和我的測試還沒開始(即測試失敗的根源指向在測試方法的開頭:

在這裏 - > TEST_METHOD([測試方法名]){

}

這是什麼意思的消息,可能是什麼原因讓它出現,我應該做的我的測試正確運行?

+0

你可以在http://connect.microsoft.com/visualstudio提交這個錯誤嗎? –

回答

19

一些調查研究後,我意識到,我忽略了,我改變包含在測試方法(這是一個.dll)項目的「輸出目錄」,是不是在同一個文件夾中我的測試項目庫的事實,因此給我的留言:

消息:無法設置執行上下文運行測試

所以這個問題是通過確保包含測試方法的.dll文件解決在與我的測試項目庫相同的文件夾中,以便在運行時我的測試項目可以找到.dll。

+0

該解決方案也適用於VS'15u3,(可能VS'17,儘管我無法確認)。 –

2

我得到這個錯誤,這是因爲我使用的是調試DLL,並沒有在那裏能找到調試C++運行時。我將調試C++運行庫複製到同一個目錄中,問題已解決。

0

我也只在發佈配置收到此錯誤,因爲我不小心使用了調試LIB作爲我的測試項目的庫依賴關係之一。 (與bmann的帖子相同的問題)

要找到導致問題的庫,我將所有測試代碼及其包含註釋掉,添加了一個空測試,並逐個刪除依賴庫,直到測試結束。

13

我有同樣的問題和前面提到的建議並沒有解決它適合我。我的項目使用了一些第三方庫,並在VS項目的編譯器和鏈接器設置中正確設置了這些庫的路徑。

事實證明,VS測試引擎無法找到這些庫,所以我將這些庫的路徑添加到了PATH環境變量中。這解決了我的問題。

提示:嘗試運行使用VSTest.Console.exe命令行單元測試。錯誤消息幫助我更輕鬆地調試我的問題。

+2

+1,用於運行VSTest.Console.exe的提示。我添加了一個.props文件和後構建副本,以獲取所有DLL依賴項複製到定義的$(OutDir)。此外,這個問題和答案適用於VS 2015(這就是我使用的)。 – hlongmore

+2

只是爲了記錄 - 要使用'VSTest.Console.exe',必須打開Visual Studio的開發人員命令提示符...。在那裏可以通過找到合適的DLL來運行單元測試,然後調用'VSTest.Console.exe/Platform:x64 UnitTest.xyz.dll'。 (x86 for 32bit) – Pascal

+0

不知不覺中,我意外刪除了我複製到我的項目的二進制文件夾的外部庫的'.dll'文件。我運行了'VSTest.Console.exe',它促使我錯過了那個.dll文件。 –

7

對於那些尋找其他答案,這是找到所有需要的DLL的問題。我跟着上面得到兩個測試DLL和DLL是在同一位置測試的建議,但仍然得到這個錯誤。

我的測試DLL不在其本機環境中,找不到它的子DLL。您可以通過運行depends.exe來了解缺少的內容。將位置添加到這些其他DLL到我的路徑解決了問題,現在一切正常。

+0

對於那些使用Visual Studio的人來說,有一些依賴的DLL位於'配置屬性' - >'鏈接器' - >'通用''''其他庫目錄' –

1

在我的項目中包含第三方dll(OpenCV)後出現此錯誤。將dll添加到路徑或將其放到system32目錄中確實有效,但我有更好的解決方案。

該測試從名爲AppX的目錄運行。在我的情況下,它是在這裏: ....... OneDrive \ Documents \ Visual Studio \ Projects \ TutorialOcr \ x64 \ Debug \ OcrTesting \ AppX

我剛剛把dll放在那裏,測試工作!

0

爲測試創建的.dll是從構建它的文件夾運行的。在我的情況下「x64 \ UnitTests \ Tests.dll」。我的應用程序的其餘部分位於「x64 \ Debug \ App.exe」和「x64 \ Release \ App.exe」中。 我的應用程序依賴於位於項目根文件夾中的外部dll,這也是爲調試啓動指定的「工作目錄」。

但是測試瀏覽器測試啓動程序忽略該設置並始終啓動工作目錄「x64 \ UnitTests」的Tests.dll,然後無法找到我依賴的dll。例如,在測試類構造函數中添加SetCurrentDirectory("..\\..");並不能解決問題,因爲如果找不到靜態依賴項,甚至無法將dll加載到內存中。

我通過將UnitTests配置的「輸出目錄」設置爲「$(SolutionDir)」解決了這個問題。這會導致Tests.dll在根文件夾中創建。

相關問題