Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 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());
}