2013-05-21 64 views
3

我試圖運行使用Microsoft墊片這個單元測試測試拋出異常,但它會拋出異常我在Shims.Context.Create();方法。UnitTestIsolationException:運行在墊片發佈/調試模式

環境: VS 2012,Win2K8 R2

namespace MyShimsUnitTest 
{ 
    [TestClass] 
    public class MyUnitTest 
    { 
     [TestMethod] 
     public void GetCurrentYear() 
     { 
      using (Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create()) 
      { 
       // Some Logic... 
      } 
     } 

    } 
} 

詳細例外:

Result Message: 
Test method MyShimsUnitTest.MyUnitTest.GetCurrentYear threw exception: 
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: UnitTestIsolation instrumentation failed to initialize. Please restart Visual Studio and rerun this test 
Result StackTrace: 
at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InitializeUnitTestIsolationInstrumentationProvider() 
    at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.CreateContext() 
    at Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create() 
    at MyShimsUnitTest.MyUnitTest.GetCurrentYear() 
+0

你能否請你確認你做了什麼建議(重新啓動Visual Studio) – Dave

+0

@DaveRook:是的,我已經重新啓動了我的VS,但沒有運氣。 –

+0

@skumar:你使用哪個測試運行器來運行上面的測試? –

回答

2

它可以通過不使用的VS 2012要使用墊片的測試資源管理器所引起,你應該只使用測試瀏覽器運行測試。

如果安裝適當的測試運行於2012年VS,可以從VS擴展管理器下載,您可以使用其他測試框架,如NUnit的或用的xUnit墊片。

5

墊片需要由IntelliTrace分析器執行的運行時檢測。測試運行人員負責設置CLR加載分析器所需的環境變量,並提供分析器必須爲墊片測試的類型列表。當ShimRuntime無法找到並附加到IntelliTrace分析器時,會引發UnitTestIsolationException,IntelliTrace分析器預計已經由CLR加載。

由於錦旭前面提到的,當測試是由不執行所需的初始化探查一個亞軍執行出現此問題。測試資源管理器和vstest.console.exe是Visual Studio 2012附帶的兩個此類運行程序。目前,Visual Studio測試運行程序在「傳統」模式下運行測試時不會執行所需的分析器檢測,當您有爲您的運行選擇一個.TESTSETTINGS文件或強制傳統模式的.RUNSETTINGS文件。

您也許可以使用支持Shim所需的探查器檢測的第三方測試運行器。

+1

在VS2015中,我必須關閉IntelliTrace設置下的「IntelliTrace事件和調用信息」選項,否則在調試時會出現此異常。 –

0

我們看到了由我們的構建服務器Bamboo報告的這個錯誤。它正在調用一個MSbuild 4.0任務。單元測試在開發者的本地PC上工作良好。我刪除了這個竹子任務,並創建了一個調用Visual Studio 2012的vstest.console的新任務。測試現在通過但Bamboo不能計算測試的次數。這是一個不是我的竹子問題。

+0

爲了讓這個工作在竹子上,你需要在服務器上安裝VS Ultimate嗎? –

+0

不,它是高級版2012 –

4

我有同樣的問題。解決我的問題的方法是從菜單中取消選中所選的.testsettings文件:TEST/Test Settings,這裏是選擇測試設置文件上方的項目。

+0

已經關閉**本地代碼調試**,這解決了問題 – Binke

2

我也遇到過這個問題。值得慶幸的是這裏的其他答案幫我解決我的問題:

我使用ReSharper的,並使用上下文菜單我注意到,亞軍是使用MSTest的時候。即使在測試資源管理器中找到測試並選擇調試,我也收到相同的異常。

然後我進入了Resharpers的選項和工具 - >單元測試 - > MsTest我未選中「啓用MSTest支持」。這不幸的是禁用了右鍵點擊測試並點擊運行/調試的選項,但它確實允許ShimsContext.Create()在從測試資源管理器視圖中選擇調試時正常運行!

1

轉到您的TestProject屬性 - >在調試部分勾選「啓用原生代碼調試」複選框。

這是應該做的。 Snapshot

+0

非常感謝,您的回答幫助我克服了這個異常。 – Fery

相關問題