2013-01-24 35 views
13

我們在項目中使用Visual Studio 2012和Team Foundation Server 2010。因爲我們使用Microsoft Fakes,所以我們可能沒有使用Team Build 2010的開始測試功能,我創建了一個構建活動,它調用VSTest.Console.exe傳遞測試程序集。這種方法對我們來說工作得很好。但是,最近簽入後,執行Vstest.console.exe時出現以下錯誤:調用執行程序'executor:// mstestadapter/v1'時發生異常:未將對象引用設置爲對象的實例

錯誤:調用executor'executor:// mstestadapter/v1'時發生異常:未將對象引用設置爲實例的一個對象。

我將二進制文件複製到我的本地機器,並能夠再次得到錯誤。有趣的是,我們在簽入之前運行一個開發版本,它運行相同的參數並且工作正常的vstest.console.exe。我的機器上有兩個文件夾,其中一個可以正常工作,其他則不可以。編譯後的程序集看起來大小相同,並沒有太大的區別。

我嘗試使用進程監視器,但找不到任何明顯的情況,除了該進程返回退出代碼1.有人知道這個錯誤嗎?有什麼方法可以從我的測試中找到更多信息?

問候,

哈米德

回答

4

我們抓住了問題的底部。我們使用的是實體框架5.0,我們也有一些情況,我們的一些測試程序集針對.Net 4.0,有些則針對.Net 4.5。

當我們試圖運行測試,使得針對不同版本的.Net框架和使用實體框架5.0的程序集在同一個Test(vstest.console.exe)過程中運行時,我們得到這個錯誤。

我認爲這與Entity Framework 5.0附帶兩個版本(net40和net45)的方式有關。一旦在該過程中加載了一個版本的庫,則其他版本將無法加載並導致錯誤。

2

我在主題中指定的同樣的錯誤時,該項目的AssemblyInfo指定了AssemblyAttribute

[assembly: AssemblyCulture("en")] 

如果attribute存在,單元測試的運行失敗。 如果我刪除了這一行代碼,或者我刪除了en語言,則單元的運行會測試成功。

+0

這給我修好了。任何人都知道爲什麼這會阻止測試運行?我的意思是,誰會認爲AssemblyCulture屬性會影響你的單元測試...... – mikesigs

+0

MS測試框架解析程序集中的類型,看看哪些標記了TestClass和TestMethod屬性。據推測,它通過反射GetCustomAttribute來完成。可能是因爲它列舉了大會,並得到它的屬性,它不會正確處理AssemblyCulture?它是一個瘋狂的猜測 - 它解析Assembly屬性而不是Type屬性的做法是任何人猜測的。 – PhillipH

0

我試着在網上解決這個異常。最後,我通過安裝Visual Studio 2013的更新v4(這是我目前使用的)來解決這個問題。希望能幫助到你!

0

刪除app.config和packages.config(如果存在),並通過nuGet包重新安裝實體框架。

1

剛纔我同樣的錯誤消息,使用新MSTest.FrameworkMSTest.TestAdapter的Visual Studio 2017年(以能夠使用直播單元測試)。原來我在我的解決方案中使用了這些軟件包的多個版本。將它們合併到最新版本解決了這個問題。

1

An exception occurred while invoking executor 'executor://mstestadapter/v2'

我曾多次TestAdapter的和TestFramework在我的BuildAgents文件夾,刪除v1.1.11版本解決了該問題:

enter image description here

1

這是爲我工作: 在Visual Studio中測試 - >測試設置 - >默認處理器架構 - > X64。

雖然它可能無法解決每個人的問題,但希望它能幫助你們中的某些人。

相關問題