Me gusta la idea de realizar pruebas unitarias pero tengo problemas para aplicarla a la programación de juegos. Los juegos son muy explícitos y, a menudo, el código no se divide en unidades distintas. En mi experiencia, la mayoría de las funciones mutan el estado en lugar de devolver los valores.¿Las pruebas unitarias son viables en la programación de juegos?
Considere una acción simple como playerJump(height)
. Me encantaría tener un banco de pruebas que verifique una gran variedad de casos para asegurarse de que saltar salga siempre como se espera. Sin embargo, esta función probablemente no devuelva ningún valor y tenga el efecto secundario de player.velocity.y = -height
y checkCollisions(player)
. No puedo pensar en una prueba de unidad clara para construir alrededor de esto.
¿Las pruebas unitarias simplemente no son viables en aplicaciones de gran estado como los juegos? ¿Las ventajas de las pruebas unitarias son tan grandes que valdría la pena programar juegos funcionalmente?
Actualización:
Juegos de Dentro tiene una serie de artículos en profundidad sobre el uso de Test Driven Development en los juegos. Los recomiendo a cualquier persona interesada en este tema. Aquí es el primer artículo:
http://gamesfromwithin.com/stepping-through-the-looking-glass-test-driven-game-development-part-1
Para UnitTest ++, vaya a github.com/unittest-cpp/unittest-cpp. Todo lo demás está desactualizado. – Markus