0 votes

Nunit ne libère pas une DLL utilisée dans un test / ne peut pas la supprimer lors du démontage

J'ai une application qui doit s'interfacer avec une DLL non gérée et franchement boguée.

J'ai compensé cela en faisant en sorte que mon application vérifie toutes sortes de conditions d'erreur lors de l'exécution de la DLL, des choses comme le délai d'attente au cas où la DLL serait entrée dans une boucle infinie.

J'essaie de tester cette gestion dans mon application, et j'ai donc délibérément codé une DLL qui entre volontairement dans une boucle infinie.

Dans mon test unitaire, je veux renommer la DLL d'origine, copier ma DLL "cassée", exécuter le test, voir le code timeout fonctionner, puis supprimer la DLL cassée et remplacer la DLL d'origine.

Cependant, dans ma méthode TearDown, je ne peux pas supprimer la DLL, car j'obtiens une exception d'accès non autorisé. Je suppose que c'est parce que nUnit a toujours la DLL "ouverte" d'une manière ou d'une autre.

Comment faire en sorte que nUnit libère la DLL ?

1voto

Paul Smith Points 339

J'ai contourné le problème en séparant les tests problématiques dans des assemblages distincts. J'ai maintenant 3 assemblages de tests, 1 contenant la majorité des tests, et 1 contenant chacun des tests qui me posaient problème. Ces deux tests comprennent du code SetUp et TearDown afin d'éliminer tout encombrement qui aurait pu être laissé par l'autre test.

Je ne sais donc toujours pas comment publier la DLL, mais en déplaçant les tests dans des assemblages séparés, je n'en ai plus besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X