Uno de los principios de TDD es que permite que TDD en algunos casos influya en su diseño. Escribes una prueba para el sistema, luego escribes el código para pasar esa prueba, mantienes las dependencias lo más superficial posible.
Para mí, solo hay dos cosas que no pruebo como parte de las pruebas unitarias:
Primero, no pruebo los elementos visuales y cómo se ven las cosas. Lo pruebo y el objeto estará en el lugar correcto después de actualizarse, que una cámara eliminará un objeto fuera de sus límites, que las transformaciones (al menos las que se realizan fuera de los sombreadores) se realizan correctamente antes de ser entregadas al motor gráfico , pero una vez que llega al sistema de gráficos, trazo la línea. No me gusta tratar de burlarme de cosas como DirectX.
En segundo lugar, realmente no pruebo la función principal del bucle del juego. Compruebo que cada sistema funcionará cuando pase un delta razonable, y que los sistemas funcionen juntos correctamente cuando lo necesiten. Luego solo actualizo cada sistema con el delta correcto en el bucle del juego. En realidad, podría tener una prueba para mostrar que cada sistema recibió una llamada con el delta correcto, pero en muchos casos encuentro esa exageración (a menos que esté haciendo una lógica compleja para obtener su delta, entonces no es una exageración).