Este planteamiento es correcto pero tal y como estan pensados los frameworks de hoy en dia (Junit, testGN, etc..) los trozos de codigo deben de ser demasiado simples. Siempre que ves un ejemplo tienes algo como esto:
Probar la funciona
int suma (int a, int b){
return a +b;
}
Y ejemplo te indica con todo lujo de detalles como probar esta funcion pero que pasa si:
- La funcion depende de base de datos.
- La funcion depende de un web services al que se conecta.
- La funcion depende de una cache de datos que solo se inicializa en casos muy concretos.
- Etc (y este etc es muy largo)
Cualquier programador que haya participado en el desarrollo de una aplicación medio compleja sabe que la unica manera fiable de probar un procedimiento es en ejecucion. Por lo que LOS TEST UNITARIOS SE DEBERIAN LANZAR EN EJECUCIÓN.
Hay framewoks como MOQ que se hacercan a esta visión de las pruebas unitarias. La idea es buena pero simular algo no es lo mismo que verlo funcionar. Ademas, los test suelen ser costosos de programar y la mayoria de tiempo de desarrollo se gasta en preparar el MOQ y lo que deberia llevarse mas tiempo de desarrollo es probar la propia logica del metodo que quieres probar.
Lo que se debe hacer para lanzar test unitarios es ejecutar la aplicación tal cual. Y una vez que este arrancada que una parte se ejecute en ultimo lugar y lance las pruebas de los metodos. De metodos de verdad, es decir no es lo mismo hacer la prueba de metodo "suma(int a, int b)" que el metodo "altaAlumno (Alumno alumno, Clase clase, Centro centro)" <-- Creo que se deduce facil la diferencia en la complejidad.


