I have class which have one public method Start
, one private method and one event Finishing
. Start
call new Thread( private_method )
You are right.
First of all, NUnit and its various hosting environments had, or still have, various defects and limitations around threads started from within a test. In particular, if you do not make sure that the thread completes before the test execution is finished, then NUnit has no idea that someone is executing in code that it is going to unload after the test has returned. I remember this pattern regularly causing crashes of VS when NUnit was being executed from it via Resharper integration, as well as occasional glitches and memory leaks of the GUI and console runners provided with NUnit.
That said, you need to ensure two things.
Assert
all the various invariants.Even better, structure your code so that you can unit test it without background threads - if possible.