Your question cannot be answered in a generic manner.
Perfect unit testing is impossible, even "very good" unit testing is incredibly hard, and is possible only when testing "very good" code. Be careful to not fall into this trap, all depends on your quality requirements.
Do you develop a mission critical system when a failure can cost lives? Go an extra mile and test as much as possible. Any change will have to pass lots of bureaucratic steps anyway. Otherwise adapt to your requirements. One of the main benefits of automated testing is simplified refactoring, when you can change (sometimes significantly) your implementation and still be sure it works to some extend. Too much testing and this gun points at you cos any change will require lots of changes in tests eventually blocking your progress.
No silver bullet as usual