...
Det er et par som er verdt å kommentere:
- Vi kan ikke teste end-attributtet, siden det ikke finnes noen getter for denne verdien. Denne testes implisitt når en kommer til siste tilstand og counter-verdien forblir den samme.
- getCounter() testes ikke eksplisitt, men brukes til å teste count(), siden slike enkle getter-metoder er banale å implementere.
- Med utgangspunkt i én start-tilstand, så kan en sjekke en sekvens av tilstander. Men dersom en tilstand har flere transisjoner til nye tilstander, så må en får en ikke testet alle alternativer uten å måtte rigge opp objektene på nytt.
Nedenfor vises oppførselen til en alternativ count-metode, hvor argumentet angir hvor langt det skal telles. Siden vi her har en forgreining, må vi teste ulike sekvenser for seg, ved å rigge opp start-tilstanden på nytt. Dette illustrerer også problemet med å teste metoder som tar argumenter: En må jo egentlig prøve alle mulige verdier for å sjekke at oppførsel er riktig for dem alle. Men det blir jo
PlantUML Macro |
---|
object "Counter" as counter1 {
counter = 1
end = 3
}
object "Counter" as counter2 {
counter = 2
end = 3
}
counter1 --> counter2 : count(1)
object "Counter" as counter3 {
counter = 3
end = 3
}
counter2 --> counter3 : count(1)
counter1 --> counter3 : count(2)
counter3 --> counter3 : count(1)
counter3 --> counter3 : count(2) |
Oppførselen til count(int) | Code Block |
---|
Counter counter = new Counter(1, 3);
counter.count(1);
if (getCounter() != 2) {
throw new IllegalStateException("Expected that counter was 2, but actually it was " + getCounter());
}
counter.count(1);
if (getCounter() != 3) {
throw new IllegalStateException("Expected that counter was 13, but actually it was " + getCounter());
}
counter.count(1);
if (getCounter() != 23) {
throw new IllegalStateException("Expected that counter was 23, but actually it was " + getCounter());
}
// test other path
counter = new Counter(1, 3);
counter.count(2);
if (getCounter() != 3) {
throw new IllegalStateException("Expected that counter was 3, but actually it was " + getCounter());
}
counter.count(2);
if (getCounter() != 3) {
throw new IllegalStateException("Expected that counter was 3, but actually it was " + getCounter());
} |
|