Versions Compared

Key

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

...

PlantUML Macro
object "#1:Counter" as counter1 {
	counter = 1
	end = 3
}

counter1 ..> counter1 : getCounter() => 1
 
object "#1:Counter" as counter2 {
	counter = 2
	end = 3
}
counter1 ..> counter2 : count()
counter2 ..> counter2 : getCounter() => 2
 
object "#1:Counter" as counter3 {
	counter = 3
	end = 3
}
counter2 ..> counter3 : count()
counter3 ..> counter3 : getCounter() => 3
counter3 ..> counter3 : count()
Code Block
test stateandbehavior.Counter

instance Counter counter = new Counter(1, 3)

sequence example1example {
	-->
	state {
		countergetCounter() == 1
	}
	-- count() -->
	state {
		countergetCounter() == 2
	}
	-- count() -->
	state #final {
		countergetCounter() == 3
	}
	-- count() --> #final
}

Diagrammet helt til venstre illustrerer oppførselen til Counter-klassen ved å vise hvordan et Counter-objekt endrer tilstand når count()-metoden kalles, inntil counter-verdien har nådd slutt-verdien (end).

jextest-koden til venstre beskriver hvordan en instans opprettet med new Counter(1, 3) drives gjennom en sekvens med tilstander ved kall til count()-metoden, inntil siste tilstand gjentas. jextest-koden er på en måte en tekstlig formulering av diagram-logikken, som kan oversettes til Java og utføres som en vanlig JUnit-test.

Hver sekvens oversettes til én test-metode som utfører koden i transisjonene og tester tilstanden før og etter. F.eks. vil sekvensen med navn example i eksempet gi opphav til metoden testExample(), som JUnit-rammeverket gjenkjenner som en testmetode. Hver tilstand er en sekvens med (som oftest logiske) uttrykk, som oversettes til kall til en assert-metode (akkurat hvilken avhenger av typen uttrykk).

Koden for uttrykk og setninger som brukes i transisjoner og tilstander følger syntaksen til Xbase-språket (del av Xtext-rammeverket), som gir kompakt og lettlest kode.