There's definitely room for improvement in terms of the interaction between coding & testing frameworks. Like, if you can write a specification for input, output, and side effects, then unit tests can be generated from that (and so can a functioning-but-not-necessarily-optimized implementation). In constraint languages like prolog, you basically write the unit tests & it produces the implementation from that.
I've run into a lot of situations where the repetitive nature of unit tests actually caused problems (ex., modifying the wrong unit test because a whole bunch of them look nearly identical and then changing the code because I thought the test failure was meaningful, or having important changes delayed because while they don't require substantial modifications to the real code they do involve fixing 300 unit tests).