The purposes have an overlap in that both serve the purpose of checking correctness.
I don’t get this. Automated tests are full of assertions. If you mean the safetynet that you construct:
you do inspections after changes also. Unit tests have a cost when changing code. You have to maintain them. Functionality changes, functions are removed and created, names of functions change, their signature changes.
I like to work fact-based, empirical research like
shows reviews to be more effective than testing. See 3.5 Review versus testing and 4.1 Cost and benefits
Claims by Uncle Bob and other agilistas about unit testing are not scientifically proved, for me they belong to the realm of pseudoscience. Moral imperatives (f.e. from Uncle Bob “if you don’t do TDD, you are unprofessional”) are unnecessary, and harmfull. I cannot take them serious.
An example of a highly ranked scientist and programmer that is not enthousiast about safetynets:
[…] today’s developers frequently build programs writing small code increments followed by immediate compilation and the creation and running of unit tests. What are your thoughts on this approach to software development?
[…]
the idea of immediate compilation and “unit tests” appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t. Otherwise, lots of time is wasted on activities that I simply never need to perform or even think about.
For more see the interview https://www.informit.com/articles/article.aspx?p=1193856
Read this thread BDD / TDD criticized by the way?