Powiedzmy, że na przykład mieć tej klasy, który generuje liczb Fibonacciego:C#: Jak testujesz metodę 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();
}
}
mogę następnie napisać test, który zapewnia, że n pierwszych liczb w kolejności są poprawne.
[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});
}
Kiedy sprawdzić zasięg będzie jednak widzę, że metoda IEnumerable.GetEnumerator() jest niesprawdzone, a mój zasięg będzie mniejszy niż to naprawdę musi być. Słusznie. Ale jak mam przetestować tę metodę?
Jak zwykle sobie z tym radzisz?
hmm, z ciekawości, w jaki sposób sprawdzasz zasięg testu? Brzmi jak interesująca funkcja. – Ian
Tak, też się nad tym zastanawiałem, hehe. Ale znalazłem przycisk do niego w TestDriven.Net, który jest całkiem niesamowity przy okazji. Jeśli nie spróbowałeś, powinieneś! Po zainstalowaniu możesz kliknąć prawym przyciskiem myszy na swoje rozwiązanie (w eksploratorze rozwiązań) i wybrać opcję Testuj z -> Zasięg. To proste :) – Svish
Jeśli masz wersję VS Team System, narzędzia testowe zawierają również narzędzie do pokrycia, które możesz wywołać za pomocą TestDriven.Net lub w zwykłym interfejsie. W przeciwnym razie, jeśli korzystasz z google testowych narzędzi pokrycia dla Visual Studio, jest ich kilka. Program NCover może być najczęściej używany. – McMuttons