You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Denne oppgaven tar utgangspunkt i Person-klassen fra den tidligere Person-oppgaven. Oppgaven går ut på å skrive JUnit-kode for en utdelt Person-klasse og anvende disse testene for å avdekke alle feilene i en utdelt Person-klasse. Filen for denne øvingen heter Person og ligger i mappen ovinger/src/testing. Før du begynner med oppgaven kan det være lurt å lese om Enhetstesting med JUnit på wikien, samt lese den fullstendige kravspesifikasjonen til Person-klassen i den opprinnelige oppgaveteksten. Person-klassen skal ha følgenge felt og metoder:

  • Person(String name, char gender) - konstruktør som tar inn navn og kjønn
  • getName() - returnerer navnet knyttet til dette Person-objektet
  • getGender() - returnerer tegnet som representerer kjønnet, enten 'F' eller 'M'
  • getMother() - returnerer Person-objektet som er moren, evt. null
  • getFather() - returnerer Person-objektet som er faren, evt. null
  • getChildCount() - returnerer antall barn dette Person-objektet har
  • getChild(int n) - returnerer barn nr. n (altså et Person-objekt), evt. utløser (et passende) unntak om n er for stor (eller liten)
  • addChild(Person) - oppretter en kobling til et barn (et annet Person-objekt). Dersom Person-objektet som metoden kalles på, er en kvinne, så skal denne bli barnets mor, og motsatt, dersom Person-objektet som metoden kalles på, er en mann, så skal denne bli barnets far.
  • removeChild(Person) - fjerner en kobling til et barn (et annet Person-objekt). Dersom Person-objektet som metoden kalles på, er moren til argumentet, så skal mother-koblingen fjernes, og motsatt, dersom Person-objektet som metoden kalles på, er argumentets far, så skal father-koblingen fjernes.
  • setMother(Person) - setter argumentet (en kvinne) som moren til Person-objektet som metoden kalles på. Argumentet får samtidig registrert Person-objektet som metoden kalles på, som sitt barn.
  • setFather(Person) - setter argumentet (en mann) som faren til Person-objektet som metoden kalles på. Argumentet får samtidig registrert Person-objektet som metoden kalles på, som sitt barn.

Testing med JUnit

Den utdelte Person-klassen inneholder to logiske feil, i tillegg til at det noen plasser mangler ordentlig innkapsling. Du skal lage klassen PersonTest som inneholder JUnit-testkode som tester den funksjonaliteten du mener er nødvendig å teste i den utdelte Person-klassen. Deretter skal du med utgangspunkt i enhetstestene dine lokalisere og begrunne feilene i Person-klassen. Det kan være lurt å bruke debuggeren i Eclipse for å følge med på hvordan koden oppfører seg under kjøring.

Hjelp / mistanke om bugs

Ved spørsmål eller behov for hjelp konsulter studassen din i saltiden hans / hennes. Du kan også oppsøke andre studasser på sal eller legge ut et innlegg på Piazza.

Godkjenning

Last opp kildekode og .ex-filene på Blackboard innen den angitte innleveringsfristen. Innlevert kode skal demonstreres for stud.ass innen én uke etter innleveringsfrist. Se for øvrig Blackboard-sidene for informasjon rundt organisering av øvingsopplegget og det tilhørende øvingsreglementet.

Exercise-panelet

For hver oppgave finnes det en tilsvarende .ex-fil, som beskriver hvilke aktiviteter, f.eks. koderedigering, kjøring av tester osv, som er en del av oppgaven. Når en jobber med en oppgave, så kan en åpne .ex-fila for oppgaven i Exercise-panelet. Dette gjøres enten ved å høyreklikke på fila og velge Exercise > Open Exercise View eller å åpne panelet med Window > Show View > Other... > Exercise View og så dra og slippe .ex-fila i panelet. Filen ligger i mappen tests, og videre i pakke med samme navn som klassen den hører til. Hver .ex-fil åpnes i en egen fane, så en kan jobbe med flere oppgaver samtidig. 
Disse .ex-filene, én for hver oppgave,  leveres inn sammen med kildekoden i øvinger hvor det er spesifisert.


  • No labels