The (unit) tests developers write themselves check the developer did what they intended to, and then that things don't change. Whatever case analysis the developer missed in the implementation tends to be missing from their tests as well, as they didn't think of it.
Testing your own work also does nothing to protect against correctly implementing the wrong thing.
Testing your own work also does nothing to protect against correctly implementing the wrong thing.