Jak mogę zdiagnozować i zminimalizować lub zapobiec AppDomainUnloadedException
?Jak mogę zapobiec AppDomainUnloadedException po NUnit testuje kod PLINQ?
NUnit 2.5.2 konsekwentnie wyrzuca AppDomainUnloadedException
po długich (> 10 s) testach z udziałem PLINQ.
W lipcu 2008 roku, Stephen Toub said:
Tak, planista w CTP nie obsługuje wątek przerywa bardzo dobrze, co często powoduje procesu awarię gdy istnieje żywo scheduler w domenie bycie wyłączonym (od czasu zamknięcia AppDomain powoduje przerwanie wątku we wszystkich wątkach z ramkami stosu w tej domenie). Pracujemy nad tym, aby utwierdzić to w przyszłym wydaniu.
próbowałem wiele obejścia, w tym:
- Uruchamianie testu w odrębnym sposobem wyeliminowania bezpańskich referencje
- Określanie
/domain:None
jako argument NUnit - usunięcie elementu
legacyUnhandledAppDomainPolicy
znunit-console.exe.config
Nie mogę ponownie dodać NUnit do reduce the odds of the race condition, ponieważ potrzebuję PLINQ, aby moje testy parametryczne działały szybciej. Wersje NUnit bez problemu nie obsługują testów parametrycznych.
patrz również http://stackoverflow.com/questions/561402/cassini-webserver-webdev-nunit-and-appdomainunloadedekspres dla pokrewnego problemu. Jest to prawdopodobnie https://bugs.launchpad.net/nunitv2/+bug/423611 –
Często taki problem jest spowodowany nieprawidłowym utylizacją obiektów utworzonych podczas uruchamiania testowego, sprawdź, czy wszystkie zasoby zostały poprawnie usunięte. – sll