Mange av oppgavene på denne wiki'n lenker til JExercise-tester, slik at en kan teste koden en skriver undervies og se om den tilfredsstiller kravene i oppgaven. jextest er et eget språk, som er bygget på Java og som kan brukes for å skrive slike tester. Målet med jextest er tredelt:
- gjøre testene lettere å forstå - logikken bak testene skal kunne leses og forstås godt nok til at en både skjønner hva og hvordan ens kode testes og forstår feilmeldingene en får når testen oppdager feil
- gjøre det raskere å skrive tester - for å kunne produsere et stort utvalg av oppgaver med tilhørende tester er det viktig at det ikke tar lang tid å skrive en test
- senke terskelen for å skrive tester - det er fint om læringsassistenter og andre med mindre erfaring kan bidra med oppgaver og tester
jextest er basert på idéen bak objekttilstandsdiagrammer: at objekter forandrer tilstand ved kall på metoder og at oppførselen kan spesifiseres/beskrives med eksempler på sekvenser av slike tilstandsoverganger. Hvis man har tegnet et objekttilstandsdiagram som er dekkende for forventede oppførsel, så skal det å kode en test på at denne oppførselen er korrekt implementert være nokså rett frem.
Oppførselen til Counter-klassen fra Tilstand og oppførsel kan for eksempel beskriveses med følgende diagram og testes med jextest-koden til høyre
test stateandbehavior.Counter instance Counter counter = new Counter(1, 3) sequence example1 { --> state { counter == 1 } -- count() --> state { counter == 2 } -- count() --> state #final { counter == 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. |