我有一系列的NUnit测试,有些失败,但我似乎无法找到一个理由,而例外是什么都没有告诉我。这是我的情况:由于System.AccessViolationException NUnit测试失败
//Controller Action
[HttpPost]
[AjaxExceptionHandler]
[OutputCache(Duration = 0)]
public PartialViewResult SomeAction(long id)
{
try
{
var model = _repository.GetModel(id);
return PartialView(@"MyPartialView", model);
}
catch (Exception ex)
{
exceptionManager.HandleException(ex, FT_EXCEPTION_POLICY);
throw;
}
}
//Action Unit Test
[Test]
[Category(TestConstants.UnitTest)]
public void SomeAction_Returns_Expected_View()
{
var model = Builder<ViewModel>.CreateNew().Build();
repository.Stub(it => it.GetModel(Arg<long>.Is.Anything)).Return(model);
var viewResult = (PartialViewResult)someController.SomeAction(1);
Assert.AreEqual(@"MyPartialView", viewResult.ViewName);
}
单元测试例外:
System.AccessViolationException:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
如果在我的操作中,我将零值传递给部分视图,如下所示:return PartialView(@"MyPartialView", null);
然后测试通过。
其他类似的情况也失败了,但其他人也通过了。我一直无法找出每个人的理由。
任何人都可以帮助我识别出什么问题吗?
感谢,
编辑:好吧,我修复了所有其他的测试失败,现在我只用System.AccessViolationException左边的人。
ADDED 安装过程形成我的测试:
[SetUp]
public void SetUp()
{
controllerBuilder = new TestControllerBuilder();
repository = MockRepository.GenerateStub<ISomeRepository>();
someController = new SomeController
(repository);
controllerBuilder.InitializeController(someController);
}
如果您删除了outputchache属性,该测试是否通过? – David
@Dvd - 具有相同属性的其他动作没有问题...但我会尝试......现在我只是在黑暗中拍摄,看看有什么命中。编辑:呃...相同的结果。 – AJC
仅仅是为了确定,在单独运行时还是仅在整个套件运行时此测试失败? –