UnitTests - asercje

0

Cześć

Mam takie pytanie:
Tworzę przykładowe testy jednostkowe do książkowego już chyba przykładu gry w kręgle. Dajmy na to, że jedna z metod testujących ma za zadanie sprawdzenie wyników dla normalnej gry bez "sparów" ani "strików". Wygląda to tak:

<code =c#>
Game target = new Game();

target.Throw(3);
    target.Throw(0);
    Assert.AreEqual(3, target.Score());

    target.Throw(3);
    target.Throw(2);
    Assert.AreEqual(3+5, target.Score());

    target.Throw(8);
    target.Throw(1);
    Assert.AreEqual(3+5+9, target.Score());

// and so on...
 

Pytanie brzmi czy mogę - tak jak to zrobiłem - używać wielu asercji w jednej metodzie testowej zamiast tworzyć oddzielne testy dla kolejno 0, 1, 2, 3... 20 rzutów ?
0

Oczywiście :) Nie ma przeciwskazań. Metoda testowa powinna sprawdzać jedną metodę dla wielu przypadków. Proponuję, żebyś skorzystał z zewnętrznej bazy danych (szukaj w msdn pod hasłem Data-Driven Unit Tests).

0

Pisane na szybko, bez kompilacji

 void TestThrow(params int[] scores){
            Game target = new Game();
            int sum=0;
            for(int i=0;i!=scores.Length;i+=2){
                target.Throw(scores[i]);
                target.Throw(scores[i+1]);
                sum+=scores[i];
                sum+=scores[i+1];
                Assert.AreEqual(sum,target.Score());
            }
        }

i teraz jedziemy (twój przypadek):


[Test]
public void Test1(){
    TestThrow(3,0, 3,2, 8,1);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1