Cache, Autofac und Tests

by Oliver 10. June 2009 10:33

Gestern ging wieder etwas Zeit drauf, als ich unsere Tests ganz machen wollte und die Tests für das UrlRewriting partout nicht in der Testsuite durchlaufen wollten. Einzeln ausgeführt funktionierte hingegen alles wunderbar.

Dieses Phänomen tritt immer mal wieder auf, und es liegt (natürlich ;-)) an den unterschiedlichen Ausgangssituationen, in denen der betroffene Test startet.

Ohne große Umschweife hier also drei potenzielle Fallen:

  • Der Cache ist gefüllt oder unsere RepositoryDb-Basisklasse hat nach GetAll() eine Liste aller Elemente zwischengespeichert (siehe auch 2.)
  • Einige Services haben einen Zustand und dieser ist anders, als im Test angenommen --> Autofac-Container recyclen
  • Die DB wird durch Custom-SQL manipuliert (bspw. zur Vorbereitung eines Tests) und alle Businesslogik wird umgangen.

Wenn also Fehler mit Tests auftreten, bitte diese drei Punkte überprüfen. Für Punkt eins und zwei gibt es in der BaseTest-Klasse die Methode RecycleServiceContainerAndClearCache().

 

Comments are closed

About Oliver

shades-of-orange.com code blog logo I build web applications using ASP.NET and have a passion for javascript. Enjoy MVC 4 and Orchard CMS, and I do TDD whenever I can. I like clean code. Love to spend time with my wife and our children. My profile on Stack Exchange, a network of free, community-driven Q&A sites

About Anton

shades-of-orange.com code blog logo I'm a software developer at teamaton. I code in C# and work with MVC, Orchard, SpecFlow, Coypu and NHibernate. I enjoy beach volleyball, board games and Coke.