Para responder a la segunda parte de su pregunta: ¿Hay algo más profundo que impida distribuir (al menos algunas de) las pruebas en varios subprocesos?
Una gran cantidad de código solo funciona cuando se ejecuta un solo hilo. Es trivial producir accidentalmente una contención de recursos y puntos muertos cuando se escriben programas en el supuesto de que se ejecutarán en un solo hilo. Y esto funciona bien porque la mayoría de los programas realmente ejecutan un solo hilo. El paralelismo se obtiene al ejecutar varias copias o diferentes programas al mismo tiempo (los scripts web son un ejemplo común: muchos usuarios que acceden a una sola página significa muchas copias de los scripts para esa página que se ejecuta al mismo tiempo).
Imagina una clase simple de "registro a archivo". Cuando creas una instancia, abre el archivo para escribir, y cuando liberas la instancia, cierra el archivo. Entonces, la primera prueba crea una instancia y comienza a ejecutar una prueba. La segunda prueba hace lo mismo en un segundo hilo. Y falla, porque la segunda instancia no puede obtener acceso de escritura al archivo. Pero si se ejecutan de una en una, todas las pruebas pasarán.
Todo esto se puede codificar, y el ejemplo simple podría ser ajustado para que funcione. Pero hacer eso es probablemente innecesario para el programa original . Tener que escribir código seguro para subprocesos para que pueda ejecutar pruebas unitarias no es razonable para muchas personas. Por lo tanto, las pruebas unitarias de subprocesos múltiples deben seguir siendo un extra opcional.