Digamos que, por ejemplo, tiene esta clase que genera números de Fibonacci:C#: ¿Cómo se prueba el método IEnumerable.GetEnumerator()?
public class FibonacciSequence : IEnumerable<ulong>
{
public IEnumerator<ulong> GetEnumerator()
{
var a = 0UL;
var b = 1UL;
var c = a + b;
while (true)
{
yield return c;
c = a + b;
a = b;
b = c;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
entonces puedo escribir una prueba que se asegura de que los primeros n números en la secuencia son correctos.
[Test]
public void GetEnumerator_FirstFifteenNumbers_AreCorrect()
{
var sequence = new FibonacciSequence().Take(15).ToArray();
CollectionAssert.AreEqual(sequence, new[] {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610});
}
Cuando compruebo para la cobertura sin embargo, se verá que el método IEnumerable.GetEnumerator() no se ha probado, y mi cobertura será menor de lo que realmente tiene que ser. Lo suficientemente justo. ¿Pero cómo debería probar ese método?
¿Cómo se suele lidiar con esto?
hmm, por curiosidad, ¿cómo verifica la cobertura de las pruebas? Suena como una característica interesante. – Ian
Sí, también me pregunté sobre eso, jeje. Pero encontré un botón para ello en TestDriven.Net, que es bastante impresionante por cierto. Si no lo has probado, ¡deberías! Después de instalarlo, puede hacer clic con el botón derecho en su solución (en el explorador de soluciones) y seleccionar Probar con -> Cobertura. Tan fácil como eso :) – Svish
Si tiene la edición VS Team System, las herramientas de prueba también incluyen una herramienta de cobertura, que puede activar con TestDriven.Net o en la interfaz habitual. De lo contrario, si pruebas herramientas de cobertura de prueba de Google para Visual Studio, hay varias por ahí. NCover podría ser el más utilizado. – McMuttons