...
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, og dette er i praksis umulig.
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)
counter2 --> 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 3, but actually it was " + getCounter());
}
counter.count(1);
if (getCounter() != 3) {
throw new IllegalStateException("Expected that counter was 3, 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());
}
// test yet another path
counter = new Counter(2, 3);
counter.count(2);
if (getCounter() != 3) {
throw new IllegalStateException("Expected that counter was 3, but actually it was " + getCounter());
} |
|
I kommentaren til