Testujemy metodę, która jest źle napisana i wpada w pętlę nieskończoną. Jak zrobić, by taki test padł? Domyślnie test się po prostu pętli w nieskończoność i już.
W VisualStudio jest jeszcze jako tako, bo widać, które testy trwają za długo, więc można ręcznie testy ubić i przyjrzeć się tym, które się nie skończyły.
Ale w VS Code (przynajmniej domyślnie) pętlące się testy są nieużywalne. Ubicie testowania powoduje, że nie widać outputu, nie wiadomo, które testy poszły źle.
Przykład:
public static class Class1
{
public static int CountTrailingZeros(this byte b)
{
int ret = 0;
for (; b % 2 == 0; b /= 2)
ret++;
return ret;
}
}
public class UnitTest1
{
[Theory]
[InlineData((byte)4, 2)]
[InlineData((byte)0, 8)]
public void Test1(byte b, int expectedTrailingZerosNo)
{
var actualTrailingZerosNo = b.CountTrailingZeros();
Assert.Equal(expectedTrailingZerosNo, actualTrailingZerosNo);
}
}
Celowo wprowadziłem pętlę nieskończoną w CountTrailingZeros
dla szczególnego przypadku, gdy argument tej funkcji jest równy 0
.
Czy dałoby się jakoś zmodyfikować ten test, tak by wywalał się na tym bugu?