Step 1 is wrong, it should read:
1. Write a feature
2. Test it
When your feature is your whole app "I want to build a TODO list app", your test is "I can write a TODO list app".
When you inevitably can't do that (because you cannot write a unit test for this), you break it down "I want to open a window/app", test that "can I launch the app window", and iterate.
"and still somehow greatly misunderstood"
It misunderstood because its presented as a methodology involving some testing suite or library, then you're constrained to testing things that may have little to no value, like testing that classes have data on them, or that you call functions and they return data.
And considering (most) engineer's first contact is something like a "write unit tests for the class you wrote", its understandable that its seen as a mixture of useless (often is) and arcane (often is) instead of an extension of a methodology for creating and validating features.