Como recién llegado a TDD estoy luchando con las pruebas de unidades de escritura que se ocupan de las colecciones. Por ejemplo, en el momento en que estoy tratando de llegar a algunas scearios prueba para probar esencialmente el siguiente métodoTDD - pruebas de escritura para un método que itera/trabaja con colecciones
int Find(List<T> list, Predicate<T> predicate);
Cuando el método debe devolver el índice del primer elemento de la lista list
que coincide con el predicado predicate
. Hasta ahora, los únicos casos de prueba que he sido capaz de llegar a haber estado en la línea de
list
Cuando no contiene elementos - devuelve-1
- Cuando
list
contiene 1 elemento que coincida conpredicate
- Devuelve0
- Cuando
list
contiene 1 elemento que no coincide conpredicate
- devuelve-1
- Cuando
list
contiene 2 elementos ambos de los cuales coinciden conpredicate
- retorno0
- Cuando
list
contiene 2 artículos, el primero de los cuales coinciden conpredicate
- volver0
- etc ...
Como se puede ver sin embargo, estos casos de prueba son numerosas y no lo hacen de manera satisfactoria probar el comportamiento real que realmente quiero. El matemático en mí quiere hacer algún tipo de TDD por inducción
- Cuando
list
no contiene elementos - devuelve-1
- Cuando
list
contiene N elementos llamanpredicate
en el primer elemento y luego llamar de forma recursivaFind
en el elementos N-1 restantes
Sin embargo, esto introduce una recursividad innecesaria. ¿Qué tipo de casos de prueba debo buscar escribir en TDD para el método anterior?
Como acotación al margen del método que estoy tratando de probar que realmente es simplemente Find
, simplemente para una colección específica y predicado (que puedo escribir de forma independiente para los casos de prueba). Seguramente debería haber una forma de evitar escribir en cualquiera de los casos de prueba anteriores y simplemente probar que el método llama a alguna otra implementación de Find
(por ejemplo, FindIndex
) con los argumentos correctos?
Tenga en cuenta que, en cualquier caso todavía me gustaría saber cómo pude unidad de prueba Find
(u otro método como él), incluso si resulta que en este caso yo no necesito.
¿Qué marco de pruebas unitarias está utilizando? –
@Kevin Rhino se burla + MSTest/el marco de prueba de unidad de Visual Studio – Justin