Creación de una función de mapeo a través de TDD: Tiempo pasado demasiado pruebas de escritura?

StackOverflow https://stackoverflow.com/questions/2078321

  •  21-09-2019
  •  | 
  •  

Pregunta

Soy un gran entusiasta de TDD, y siempre se esfuerzan para escribir pruebas antes de escribir el código de producción para asegurar el correcto comportamiento del código que estoy escribiendo. Ocasionalmente, sin embargo, varios pregunta si es prudente escribir una gran cantidad de pruebas para ciertos tipos de métodos. Esto parece venir más a menudo cuando se escribe una clase Mapper.

public class FooBarMapper
{
    public Foo MapToFoo(Bar bar)
    {
        return new Foo
        {
            Id = bar.Id,
            Name = bar.Name,
            FooYuk = bar.Beverage,
            /* ... */
        };
    }
}

decir, por ejemplo que hay aproximadamente una docena de propiedades para asignar a arriba. En un entorno TDD, antes de escribir cualquiera de las asignaciones, probablemente me escribo una prueba. Algo así como MapToFooMapsBeverageToFooYuk(). La prueba falla, que me lleva a escribir el código para hacerlo pasar. Repito esto para cada propiedad en el mapa. La pregunta es: ¿Es esta la toma de prueba de primer desarrollo demasiado lejos? Yo personalmente no lo creo, ya que prefiero tener un conjunto completo de pruebas que me dice exactamente lo que hace el código, pero me gustaría saber qué piensa la comunidad.

¿Fue útil?

Solución

Hasta el tío Bob Martin, un firme defensor de TDD y todas las cosas TDD, dice que usted no tiene que escribir pruebas unitarias para cada propiedad trivial (una propiedad trivial que se define como una propiedad que solo obtiene y establece una variable miembro ).

Si alguna vez escribir una propiedad que tiene efectos secundarios (que dudo que lo hará), después se puede añadir una unidad de prueba a la misma. Como DuffyMo señala, si sus propiedades están cubiertos por las pruebas funcionales, no debería haber ninguna necesidad de pruebas de unidad, ya que no hay especificación de la funcionalidad que se está definiendo con la prueba de unidad, que no sea el get trivial / set.

Otros consejos

Tal vez esto es lo que FitNesse nació para.

En este caso, me gustaría escribir una sola prueba que pone a prueba todas las propiedades triviales a la vez. No todo es la manera estándar de hacer las cosas, pero con el tiempo, las pruebas de las propiedades individuales triviales probablemente sería reprogramado para una sola prueba para todas las propiedades. Dado que las propiedades son triviales, propongo comenzar con la prueba que le ha terminado con.

Después de la cartografía de las tres primeras propiedades, me gustaría ver la duplicación y reemplazarlo por iteración sobre las propiedades y su asignación mediante la reflexión. Que sólo necesita un par de pruebas: 0 propiedades, 1, 5 propiedad propiedades, objeto de destino no tiene las propiedades esperadas, objeto de origen no tiene las propiedades esperadas. Ahora puedo volver a utilizar este motor de mapeo en general en todas partes en todas mis aplicaciones y no tener que comprobar que cada vez que lo uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top