...
PlantUML Macro |
---|
title | Oppførselen til count() |
---|
| object "Counter" as counter1 {
counter = 1
end = 3
}
counter1 --> counter1 : getCounter() => 1
object "Counter" as counter2 {
counter = 2
end = 3
}
counter1 --> counter2 : count()
counter2 --> counter2 : getCounter() => 2
object "Counter" as counter3 {
counter = 3
end = 3
}
counter2 --> counter3 : count()
counter3 --> counter3 : getCounter() => 3
counter3 --> counter3 : count() |
Oppførselen til count() og getCounter() | Code Block |
---|
language | java |
---|
title | Test Testing av oppførselen til count() |
---|
| Counter counter = new Counter(1, 3);
if (getCounter() != 1) {
throw new IllegalStateException("Expected that counter was 1, but actually it was " + getCounter());
}
counter.count();
if (getCounter() != 2) {
throw new IllegalStateException("Expected that counter was 2, but actually it was " + getCounter());
}
counter.count();
if (getCounter() != 3) {
throw new IllegalStateException("Expected that counter was 3, but actually it was " + getCounter());
}
counter.count();
if (getCounter() != 3) {
throw new IllegalStateException("Expected that counter was 3, but actually it was " + getCounter());
} |
|
...
PlantUML Macro |
---|
title | Oppførselen til count(int) |
---|
| 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 |
---|
language | java |
---|
title | Test Testing av oppførselen til count(int) |
---|
| 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());
}
// 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());
}
// 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());
} |
|
Når en skriver testkode som over, vil en oppdage at det er en del kode(mønstre) som går igjen, f.eks. det å sjekke at en verdi er som er forventet og utløse et unntak med en passende melding. I tillegg vil en typisk ha egne hjelpemetoder for å rigge opp objektstrukturer osv. For å gjøre kodingen av tester mer effektiv er det lurt å benytte seg av et rammeverk, f.eks. JUnit. JUnit fungerer som en slags mal for skriving av testkode og tilbyr mange hendige hjelpemetoder. Du kan lese mer om dette her.
Det at det ikke er noen transisjoner fra den siste tilstanden, kan bety at alle kall til count(int) er ulovlige og utløser unntak, og utløsing av unntak er også oppførsel det er viktig å teste at er korrekt implementert.
...
Imidlertid har JUnit svak støtte for testing av unntak, så derfor kan det være greit å lese litt om testing av unntak med JUnit.