Siempre empiezo escribiendo el código, solamente agrego tests cuando se que voy a ha depender bastante del código (por ejemplo una libreria que voy a ocupar en varios projectos y necesito agregar funcionalidad después a medida que vaya necesitando). Y no uso ningún framework, basicamente escribo mis propias funciones, nada complicado solo una función que evalúa otras funciones dinamicamente y se asegura que el valor esperado es igual al real.
Ultimamente he estado escribiendo bastante JavaScript y TDD no es muy común, especialmente cuando lo que se hace es modificar el DOM y se necesita comprobar visualmente los resultados. Aunque en mi radar están Jasmine y QUnit.
-*-
Basicamente esta es mi testing framework para JS. En otros lenguajes utilizo assert o escribo la misma función.
var test = function(f, args, expected){
var result = f.apply(this, args);
var msg = 'Testing ' + f.name + '(' + args.join() + ') => ' + result;
msg += '...................' + (result === expected ? ' OK!' : ' FAIL');
console.log(msg);
};
Si tengo las siguientes funciones
function sum(x,y){ return x + y; }
function abs(x){ return (x > 0 ? 0 : -1 * x); }
solo escribo un script para tests
test( sum, [1,2] ,3);
test( sum, [1,4] ,3);
test( abs, [-4] ,4);
Que produce, lo siguiente
Testing sum(1,2) => 3................... OK!
Testing sum(1,4) => 5................... FAIL
Testing abs(-4) => 4................... OK!
Es simplista pero bastante útil y el principio es el mismo en varios lenguajes.
Sí es cierto, pero es más fácil y cómodo ir acumulando un repositorio de reutilizables ANTES de enfrentar un proyecto en algún punto del tiempo, y simplemente usar las piezas genéricas para armar el producto.
r diferentes tareas primitivas que son la base del resto de cosas más complejas.
Como vas a justificar tardarte meses solucionando problemas que
pensas que vas a tener algún dia... podes pasar una eternidad escribiendo modulos reusables y juntar una libreria solo para luego encontrarte con la triste realidad que sos un programador y no nostradamus. En el mundo real, fuera de los libros de 1980 y monitores monocromáticos con los que soñas,... lo que mencionas no es practico... cuando vos venis ya varios va regresando y lo que vos esperabas solucionar ya a nadie le interesa. Las herramientas se construyen cuando hay necesidad de hacerlo, y cuando ya la tenes hecha la podes reutilizar y modificarla.