I’ve found that FetchContent is perfect for grabbing testing frameworks. Tests aren’t part of a project’s API so vendoring this dependency should place no extra burden on packagers who will disable tests while providing a really convenient experience for developers and CI runners who may not have the specific test framework version already installed.
I'm somewhat surprised though that neither the official CMake documentation nor the official CMake book mention any of this apart from the "raw" documentation of the functions.