我試圖使用AutoMoqCustomization和AutoFixture通過Fixture在單元測試中創建ASP.NET MVC2控制器。 CreateAnonymous方法。我已經在xUnit下的TestDriven.NET,xUnit測試GUI和MSTest中嘗試過,並且都具有相同的結果:運行測試的過程出現嚴重故障。在Windows 7 x64上如果有問題。Fixture.CreateAnonymous方法使用AutoMoq創建控制器時會導致測試運行器進程出現錯誤(AutoFixture)
要重現,只需創建一個新的ASP.NET MVC2項目,添加到AutoFixture,AutoMoq和起訂量的參考(3.1,按照該AutoMoq源),並嘗試以下(攝製VS2010 MVC2項目下面的鏈接):
[TestMethod]
public void Index()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
// here's where the error in the test host occurs:
HomeController controller = fixture.CreateAnonymous<HomeController>();
}
在MSTest的錯誤讀取:
運行時遇到一個致命錯誤。錯誤的地址是0x6465f370,位於線程0x2684。錯誤代碼是0xc0000005。此錯誤可能是CLR中的錯誤,也可能是用戶代碼中不安全或不可驗證的部分。此錯誤的常見來源包括COM-interop或PInvoke的用戶編組錯誤,這可能會破壞堆棧。
AfWithMvc repro project (from SkyDrive)
謝謝,這是一個很好的解釋和修復。對於它的價值,我同意你的想法,即應該保護IntPtr,但不應該增加代表特定的支持 - 似乎沒有必要。 – ZeroBugBounce 2010-08-18 20:06:25
好的,我玩弄fixture.Inject>(..)以及該和MVC2源之間,發現MVC框架要求null作爲終止符/信號從Func