I just read the almost 20 year old Joel Test page for the first time in a long while and I was surprised by what it didn't contain. For example, it doesn't even mention unit tests. Which is no real surprise, because JUnit itself is only 23 years old. Things like code coverage tools didn't exist back then. And while there were some early tools for automated builds, like Mozilla Tinderbox, setting them up was a real challenge.
I think that maybe folks aren't quite clear on what "Unit Test" means.
Nowadays, "unit test" means a test written into an existing test harness system, like JUnit or XCTest (what I use).
In fact, I was writing unit tests for PHP-based Web apps and C++-based Mac software more than twenty years ago. I just had to write my own framework.
Even nowadays, I sometimes write my own framework. For example on my [hopefully] last PHP project, I designed a SaaS-type system, and eschewed PHPUnit; mostly because it would need some special installation that might be beyond the ken of the target users. Instead, I wrote my own test harness system, and it worked great. It wasn't a crazy amount of extra work. I always create massive tests, anyway, so it wasn't that big a deal.
For my Apple/Swift work, I rely on XCTest, which is a perfectly acceptable test harness.
I'm pretty sure that unit tests were mentioned in Writing Solid Code, which is almost 30 years old.
Code coverage and automated testing tools existed and were mature when I started at my now defunct employer 20 years ago. In The Soul of a New Machine [0] (published 40 years ago) such tools were used and the author wrote about them without any indication that they were new or novel. Every new generation of developers thinks that the "old days" were primitive, but that's just not true.
I guess I worked at one of the best then. It still went out of business.