Ho una serie di test NUnit e alcuni falliscono, tuttavia non riesco a trovare una ragione, e l'eccezione non mi dice nulla. Questo è il mio caso:Il test NUnit fallisce a causa di System.AccessViolationException
//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);
}
Unit Test Eccezione:
System.AccessViolationException: Tentativo di lettura o scrittura della memoria protetta. Questo è spesso un'indicazione che un'altra memoria è corrotta.
Se nella mia azione passo un valore nullo alla vista parziale, così: return PartialView(@"MyPartialView", null);
Poi passa il test.
Anche altri casi simili falliscono, altri ancora passano. Non sono stato in grado di identificare una ragione per ciascuno.
Qualcuno può aiutarmi a identificare cosa c'è che non va?
Grazie,
EDIT: Ok, ho fissato tutti gli altri test in fallimento e ora ho solo quelli con il System.AccessViolationException sinistra.
AGGIUNTO procedura Imposta la mia forma di test:
[SetUp]
public void SetUp()
{
controllerBuilder = new TestControllerBuilder();
repository = MockRepository.GenerateStub<ISomeRepository>();
someController = new SomeController
(repository);
controllerBuilder.InitializeController(someController);
}
Questo test passa se rimuovi l'attributo outputchache? – David
@Dvd - Altre azioni con lo stesso attributo passano senza problemi ... Ma ci proverò ... In questo momento sto solo girando al buio, vedo cosa colpisce. EDIT: Nop ... stesso risultato. – AJC
Solo per essere certi, questo test ha esito negativo quando viene eseguito in isolamento o solo quando viene eseguita l'intera suite? –