Siendo nuevo en el desarrollo basado en pruebas, esta pregunta me ha estado molestando. ¿Cuánto es demasiado? ¿Qué debería probarse, cómo debería probarse y por qué debería probarse? Los ejemplos dados están en C# con NUnit, pero asumo que la pregunta en sí es independiente del idioma.Casos de prueba, "cuándo", "qué" y "por qué"?
He aquí dos ejemplos actuales de mi propia, pruebas de un objeto de lista genérica (siendo probado con cadenas, la función de inicialización añade tres elementos {"Foo", "Bar", "Baz"}
):
[Test]
public void CountChanging()
{
Assert.That(_list.Count, Is.EqualTo(3));
_list.Add("Qux");
Assert.That(_list.Count, Is.EqualTo(4));
_list[7] = "Quuuux";
Assert.That(_list.Count, Is.EqualTo(8));
_list.Remove("Quuuux");
Assert.That(_list.Count, Is.EqualTo(7));
}
[Test]
public void ContainsItem()
{
Assert.That(_list.Contains("Qux"), Is.EqualTo(false));
_list.Add("Qux");
Assert.That(_list.Contains("Qux"), Is.EqualTo(true));
_list.Remove("Qux");
Assert.That(_list.Contains("Qux"), Is.EqualTo(false));
}
El código es bastante auto-comentando, por lo No entraré en lo que está pasando, pero ¿este tipo de cosas lo lleva demasiado lejos? Add()
y Remove()
se prueban por separado, por supuesto, ¿a qué nivel debería acudir con este tipo de pruebas? ¿Debería incluso tener este tipo de pruebas?
La razón por la que lo rellené previamente (usando .Add()) fue para que la mayoría de los métodos, que necesitan trabajar con datos de prueba, tengan algo con lo que trabajar. –
Entiendo eso. Sin embargo, su lista también puede estar vacía, que es un estado válido (es decir, Count debe devolver 0, etc.) Esto es fundamentalmente "diferente" de agregar a una lista que ya tiene elementos, de ahí el término "clases de equivalencia". – Yuval
Tengo una prueba para .Clear() y una prueba para agregar después de una .Clear(), así como una prueba para crear y agregar a una lista que se crea sin capacidad inicial. Creo que todavía estoy cubierto, a menos que se te ocurra otra cosa. –