582334 TDD-ohjelmointimenetelmä ja koodin suunnittelu (5 op), syksy 2009
582334 TDD programming technique and designing code (5 cr), autumn 2009

Kurssiesittely Luennot Harjoitukset

Harjoitus 4: Tetris #7 (mock objects). AddressBook #1 (ensimmäiset askeleet).

Tetris-harjoitustyö

Katso ohjeet ensimmäisistä harjoituksista.

AddressBook-harjoitustyö

Tämän harjoitustyön päämääränä on tehdä graafinen osoitekirja, johon voi lisätä henkilöitä (nimi, osoite, puhelinnumero, sähköposti) ja joita pystyy hakemaan kaikkien kenttien perusteella. Ohjelman tekeminen on tarkoitus aloittaa tyhjältä pöydältä. Voit ottaa tästä pohjaksi tyhjän Maven-projektin.

Valmiista ohjelmasta tullee jotain alla olevan kuvan kaltaista. Osoitekirjan henkilötiedot näkyvät suoraedioitavassa taulukossa ja hakusanan kirjoittaminen hakukenttään filtteröi listaa jokaisella näppäimenpainalluksella niin, että siinä näkyvät kaikki hakutulokset.

Esimerkki lopputuloksesta

Kotitehtävät

max 7 pistettä

  1. Tetris #7: Toteuta Tetrikseen täysien rivien poistaminen ja pisteiden lasku käyttäen TDD:tä. Jatka toteutusta siitä, mihin jäit edellisissä harjoituksissa. Käytä testeissäsi EasyMock-kirjastoa, jotta oppisit interaction-based -testauksen mock objectien avulla. Lisäksi käytä testeissäsi Mockito-kirjastoa, joka on enemmän spy- kuin mock-kirjasto; testaus sillä on tyyliltään enemmän state-based. Koska mock objecteja ei pysty käyttämään kovin monessa testissä, toteuta kyseiset testit kahteen kertaan - kerran EasyMockilla ja toisen kerran Mockitolla.

    Mock objecteja voi käyttää esimerkiksi toteuttamalla rivien poistaminen siten, että kun rivi poistetaan, niin kutsutaan rivien poistamista kuuntelevan rajapinnan metodia. Rajapinta voisi olla jotain tällaista:

    public interface RowRemovalListener {
        void onRowsRemoved(int rowCount);
    }

    Joudut lisäämään riippuvuuden EasyMock-kirjastoon Tetris-projektin pom.xml-tiedostoon, koska sitä ei ollut siellä vielä kurssin alussa. Tämä onnistuu lisäämällä seuraavat rivit sen <dependencies>-lohkoon. Voit joutua generoimaan IDEsi projektitiedostot uudestaan.

    <dependency>
        <groupId>org.easymock</groupId>
        <artifactId>easymock</artifactId>
        <version>2.5.2</version>
        <scope>test</scope>
    </dependency>

    1 piste: Tetrikseen on toteutettu TDD:llä täysien rivien poistaminen. Kaikki testit menevät läpi.
    2 pistettä: Tetrikseen on toteutettu TDD:llä täysien rivien poistaminen ja pisteiden laskeminen. Kaikki testit menevät läpi.
    +1 lisäpiste: Testeissä on käytetty EasyMock-kirjastoa.
    +1 lisäpiste: Testeissä on käytetty Mockito-kirjastoa.

  2. AddressBook #1: Toteuta osoitekirjaan henkilöiden lisääminen ja hakeminen käyttäen TDD:tä. Tee tämä yksin, älä parikoodaa, jotta kokisit ensimmäisten askeleiden tekemisen itse. Graafista käyttöliittymää ei vielä ole tarkoitus toteuttaa (se jätetään seuraaviin harjoituksiin).

    1 piste: Osoitekirjan tekemisessä TDD:llä on päästy alkuun ja on kirjoitettu vähintään kolme testiä. Kaikki testit menevät läpi.
    2 pistettä: Osoitekirjaan on toteutettu TDD:llä henkilöiden lisääminen. Kaikki testit menevät läpi.
    3 pistettä: Osoitekirjaan on toteutettu TDD:llä henkilöiden lisääminen ja hakeminen. Kaikki testit menevät läpi.

Harjoitustilaisuudessa keskustellaan projektin aloittamisesta TDD:llä ja parikoodataan AddressBookiin graafinen käyttöliittymä.


Viimeksi muokattu 01.12.2010 21:04 Copyright © 2009 Esko Luontola