My current team is the first one in my career as a software engineer in which our testing infrastructure is robust enough to think like this. I just resolved a bug this week by writing a test that failed due to its presence (and leaving a comment with the ID of the bug), changing the code, then re-running the test to ensure that it passed. This confidence in our code base is wonderful; I have never felt so little fear when deploying.
Looking back, it amazes me that I ever didn't develop software this way.
Go does. So does Rust. Both languages have some sort of unit testing facilities packaged with the standard distribution. And both are dead simple to use.
Looking back, it amazes me that I ever didn't develop software this way.