我试图使用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