Reoccurring bugs are very common. For some reason they keep popping back up as the development process progresses. Unit tests are good to keep bugs from coming back.
Testing Tools used for unit testing:
Frameworks - used to organize and execute.
Assertion Libraries - tools to verify that things are correct.
Mocking Libraries - can help you fake external systems, pre-program your classes with expected responses, and test hard-to-replicate error conditions.
Test Runners - picks up an assembly (or a source code directory) that contains unit tests, and a bunch of settings, and then executes them and writes the test results to the console or log files.