If you want some concrete examples, here you go:
Here's my "Spinner" widget:
https://github.com/RiftValleySoftware/RVS_Spinner
This is the four test harness apps:
https://github.com/RiftValleySoftware/RVS_Spinner/tree/main/...
This is my checkbox widget:
https://github.com/RiftValleySoftware/RVS_Checkbox
Here's the test harness app:
https://github.com/RiftValleySoftware/RVS_Checkbox/tree/main...
There's more, but these should be enough to illustrate the point.
My understanding is, test harnesses are standalone wrapper apps dedicated to testing, vs more granular unit tests which are traditionally colocated with (eg, files alongside) app src code in a given project. Care to elucidate?
^ from https://littlegreenviper.com/testing-harness-vs-unit/