En cuanto al patrón de prueba clásico de Arrange-Act-Assert, frecuentemente me encuentro agregando una contraafirmación que precede a Act. De esta forma, sé que la afirmación que pasa realmente está pasando como resultado de la acción.¿Debería ser "Arrange-Assert-Act-Assert"?
Creo que es análogo al rojo en rojo-verde-refactor, donde solo si he visto la barra roja en el curso de mis pruebas sé que la barra verde significa que he escrito un código que hace una diferencia Si escribo una prueba de aprobación, entonces cualquier código lo satisfará; de manera similar, con respecto a Arrange-Assert-Act-Assert, si mi primera afirmación falla, sé que cualquier Ley habría pasado el Assert final, por lo que no estaba realmente verificando nada sobre la Ley.
¿Sus pruebas siguen este patrón? ¿Por qué o por qué no?
Actualización Aclaración: la afirmación inicial es esencialmente lo contrario de la afirmación final. No es una afirmación de que Arrange funcionó; es una afirmación de que la Ley aún no funcionó.
Gracias por regresar con un ejemplo, Carl. Bueno, en la parte roja del ciclo TDD, hasta que abarque() realmente hace algo; la primera afirmación no tiene sentido, es solo una duplicación de la segunda. En verde, comienza a ser útil. Está adquiriendo sentido durante la refactorización. Podría ser bueno tener un marco UT que lo haga automáticamente. – philant
Supongamos que usa TDD en la clase Range, ¿no habrá otra prueba fallida probando el Range Ctor, cuando la romperá? – philant
@philippe: No estoy seguro de entender la pregunta. El constructor de Range e includes() tienen sus propias pruebas unitarias. ¿Podría elaborar, por favor? –