Unit Testing Finalize

Throwing out a philosophical question here:

 

Should unit tests try to call Finalize()?

 

Let’s say I have a disposable object. Following the coding pattern for IDisposable, I should create a finalizer, and call a private version of Dispose() that takes a bool, which would take false in the finalizer. Now, finalizers are called by the garbage collector, so trying to do something in the test where I’d call GC.Collect() a number of times feels ugly. I could go the Reflection route, find the method, and call it…this seems like a “cleaner” approach, but is this overkill? But it is a method I’ve declared in my class and not having code coverage around it doesn’t seem right either.

 

I really don’t have any solid views either way on this…feel free to comment with your thoughts, comments, emotional outbreaks, etc.

* Posted at 11.03.2008 09:55:03 AM CST | Link *

Blog History