Versions Compared

Key

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

Denne oppgaven tar utgangspunkt i Person-klassen fra den tidligere Person-oppgaven. Oppgaven går ut på å finne feil skrive JUnit-kode for en utdelt Person-klasse , og skrive JUnit-kode som tester alle scenarioene du avdekker. Filen for denne øvingen heter Person.java og og anvende disse testene for å avdekke alle feilene i en utdelt Person-klasse. Filen for denne øvingen 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.

...

Her er en kjapp oppsummering av Person-oppgaven. 

Person-klassen skal ha følgende felter og metoder:

  • Person(String name, char gender) - tar inn navn og kjønn, som kun skal kunne settes i konstruktøren
  • 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.

Gjøremål

Den utdelte Person-klassen inneholder to logiske feil, i tillegg til at det noen plasser mangler ordentlig innkapsling. Du skal lokalisere disse feilene, men du trenger ikke nødvendigvis å rette de opp. For å finne feilene kan det være lurt å lage en main-metode og forsøke å opprette koblinger mellom noen personer. Det kan også være lurt å bruke debuggeren i lage klassen PersonTest som inneholder JUnit-testkode som tester den funksjonaliteten du mener er mest 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.

Del 2 - Testing med JUnit

Person-klassen ligger i ovinger/src/testing. PersonTest-klassen skal også legges her.

 Når du har funnet feilene i koden, skal du skrive JUnit-testkode som avdekker feilene i den gitte implementasjonen av Person-klassen - hvis du kjører testene med den gitte implementasjonen, skal testene altså mislykkes, hvis du retter opp i koden, skal testene lykkes. Testene dine trenger ikke dekke all funksjonalitet i Person-klassen, men de skal avdekke feilene i den gitte implementasjonen.

Include Page
Bunntekst for Exercise-øvinger
Bunntekst for Exercise-øvinger