The right thing, I can define with code and check for correctness with tests. I guess I mean that if it can be expressed clearly in code, it should.
But I don't completely disagree that they can have their place. They just get used as crutches for unreadable code a lot of time, that's all.