Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.



Samankaltaiset tiedostot
JUnit ja EasyMock (TilaustenKäsittely)

Poikkeustenkäsittely

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Mikä yhteyssuhde on?

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Olio-ohjelmointi Javalla

9. Periytyminen Javassa 9.1

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Testivetoinen ohjelmistokehitys

Ohjelmointi 2 / 2010 Välikoe / 26.3

1 Tehtävän kuvaus ja analysointi

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

14. Poikkeukset 14.1

Luokan sisällä on lista

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

9. Periytyminen Javassa 9.1

Periytyminen (inheritance)

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

8. Näppäimistöltä lukeminen 8.1

Ohjelmoinnin perusteet, syksy 2006

1. Mitä tehdään ensiksi?

Ohjelmointi 2 / 2011 Välikoe / 25.3

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

8. Näppäimistöltä lukeminen 8.1

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Java-API, rajapinnat, poikkeukset, UML,...

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

public static void main (String [] args)

Ohjelmoinnin jatkokurssi, kurssikoe

Rinnakkaisohjelmointi, Syksy 2006

Interaktiivinen tarinankerronta

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

5. HelloWorld-ohjelma 5.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

1. Omat operaatiot 1.1

Metodien tekeminen Javalla

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

YHTEYSSUHDE (assosiation)

Ohjelmistotekniikan menetelmät, koe

15. Ohjelmoinnin tekniikkaa 15.1

Olio-ohjelmointi Virhetilanteiden käsittely

ITKP102 Ohjelmointi 1 (6 op)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Test-Driven Development

Web Services tietokantaohjelmoinnin perusteet

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmointi 2, välikoe

Pakkauksen kokoaminen

UML ja luokkien väliset suhteet

Test-Driven Development

Tietokannat II -kurssin harjoitustyö

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

12. Näppäimistöltä lukeminen 12.1

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Sisältö. 2. Taulukot. Yleistä. Yleistä

Eclipse ja JUnit-ohjelmoijatestit

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

Sisältö. 22. Taulukot. Yleistä. Yleistä

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Harjoitustyön testaus. Juha Taina

Listarakenne (ArrayList-luokka)

Testaussuunnitelma. Populous. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Ohjelmien testaustyökalut

Pakkauksen kokoaminen

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

4. Luokan testaus ja käyttö olion kautta 4.1

Jypelin käyttöohjeet» Ruutukentän luominen

15. Ohjelmoinnin tekniikkaa 15.1

ITKP102 Ohjelmointi 1 (6 op)

5. HelloWorld-ohjelma 5.1

DOORS 7.1 Test Tracking Toolkit

58160 Ohjelmoinnin harjoitustyö

JAVA-OHJELMOINTI 3 op A274615

Luokat ja oliot. Ville Sundberg

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

Lista luokan sisällä

Tietokannat II -kurssin harjoitustyö

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Java ja grafiikka. Ville Sundberg

Ohjelmoinnin perusteet, kurssikoe

Testilähtöinen ohjelmistokehitys. Testilähtöinen ohjelmistokehitys. TDD Testilähtöinen ohjelmistokehitys. Testi! Testi. Test-Driven Development, TDD

Mitä poikkeuskäsittely tarkoittaa?

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Taulukoiden käsittely Javalla

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Transkriptio:

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. JUnit-ympäristö 1. Luo tests -pakkaukseen uusi luokka. Nimeä VHTestit. 2. Laita VHTestit periytymään TestCase:sta (extends TestCase). Importtaa Quick Fix:llä TestCase 3. Luo luokkaan seuraavat funktiot 1. Tämä funktio ajaa luokan (Suite) testitapaukset. public static void main (String[] args) junit.textui.testrunner.run (suite()); 2. Tämä funktio luo luokasta JUnit Suite:n. Eli yhdistää luokassa olevat testitapaukset yhdeksi kokonaisuudeksi. public static Test suite() TestSuite suite = new TestSuite( "VHTestit test suite" ); suite.addtestsuite( VHTestit.class ); return suite; 3. Nämä funktiot toimivat Suiten -ympäristön luomisessa ja sen purkamisessa. protected void setup() throws Exception super.setup(); protected void teardown() throws Exception super.teardown(); 4. Lisää tests -pakkauksessa olevaan AllTests luokkaan VH1Testit (suite.addtest( VHTestit.suite() );). Yhteen Suiteen voidaan lisätä tällä tyylillä useita Suiteja, jolloin testeistä voidaan muodostaa hierarkioita. Koodia testattavaksi Huom! Mikäli olette ehtineet jo koodata omaa koodia näihin funktioihin, laittakaa ne harjoituksen ajaksi kommentteihin! 1. XMLException palauttamaan virheilmoitus: public String getexception() return "XMLException:" + exception_; Lisäksi rakentaja ja private -muuttuja private String exception_; public XMLException( String exception ) exception_ = exception;

2. XMLService:n funktiot add() ja search() toimimaan seuraavanlaisesti: public void add( Page page ) throws XMLException if( page.getid().equals("abc-123-1234") ) throw new XMLException( "Page id is already in use!!"); else if( page.getkey().equals("go") ) throw new XMLException("Page key is already in use!"); public Page search( String searchkey ) throws XMLException if( searchkey.equals( go ) ) throw new XMLException(" Page was not to be found!"); else if( searchkey.equals( tty ) ) throw new XMLException( "Found more than one pages!" ); Page p = new Page("abc-123-1235", "Hesari", "hs", "http://www.hs.fi"); return p; Testitapausten teko 1. Tee seuraavat VHTestit -luokkaan: 2. Alusta JUnit-ympäristö ( setup() ) seuraavanlaisesti: protected void setup() throws Exception super.setup(); handler_ = new XMLService( "t.xml", "t.xsd" ); p1 = new Page("abc-123-1233", "Google", "go", "http://www.google.fi"); p2 = new Page("abc-123-1234", "TTY", "tty", "http://www.tut.fi"); p3 = new Page("abc-123-1235", "Hesari", "hs", "http://www.hs.fi"); sekä seuraavat private -muuttujat: private XMLService handler_; private Page p1; private Page p2; private Page p3; 3. Pura JUnit-ympäristön tekemät varaukset ( teardown() ) seuraavanlaisesti: protected void teardown() throws Exception super.teardown();

handler_ = null; p1 = null; p2 = null; p3 = null; 4. Luo seuraavat testitapaukset VHTestit-luokkaan: // Testitapausten pitää alkaa määreellä 'test'. public void testaddsuccess() handler_.add( p2 ); // Fail-käskyllä voidaan itse aiheuttaa testin epäonnistuminen fail("there was an unexpected error in add()!"); public void testsearchsuccess() String message = "Pages are not equal!"; Page page = handler_.search( "hs" ); // Asserteilla voidaan testata onnistuiko tehtävä. Tässä vertaillaan kahta // Page:a, jos ne eivät ole yhtä suuret ilmoitetaan siitä virheviestillä. assertequals( message, page, p3 ) ; fail("there was an unexpected error in search()!"); String message = "Pages are not equal!"; Page page = handler_.search( "go" ); assertequals( message, page, p1 ) ; fail("there was an unexpected error in search()!"); public void testaddfailure()

handler_.add( p1 ); handler_.add( p2 ); //Ilmoitetaan että tämä oli tahallinen virhe. asserttrue( "This is an intentional error!", false ); public void testsearchfailure() Page page = handler_.search( "go" ); Page page = handler_.search( "tty" ); Testitapausten ajo ja tulosten tulkinta 1. Testitapauksia voidaan ajaa kolmella eri tapaa: 1. Yksi testitapaus kerrallaan: Valitse luokka jossa testitapaukset sijaitsevat. Klikkaa Outline -näkymä päälle -> klikkaa haluamisi testitapauksen kohdalla oikeata hiiren nappia -> valitse Run As->JUnit Test 2. Yksi Suite kerrallaan: Klikkaa hiiren oikeata nappia haluamasi luokan kohdalla ja valitse Run As->JUnit Test 3. Monta Suite:a kerralla: Samalla tavalla kuin kohdassa 2, mutta luokka johon olet

lisännyt useita Suite:ja esim. AllTests. 2. Aja tavalla 2 VHTestit 3. Testaustulosten tulkinta. JUnit Test:n ajaminen aukaisee JUnit -näkymän, josta nähdään testauksen tulokset. Failures -kohdasta voidaan tarkastella missä testitapauksissa syntyi odottamattomia virheitä. Hierarchy-kohdasta nähdään testauksen hierarkia. Eclipsen Consolista voidaan lukea System.out:a, mikäli sellaista jossain syötetään. Kuvasta (1.1) nähdään JUnit testiajon tulokset. Ajossa on tapahtunut kolme Failure:a ja yksi testitapaus mennyt läpi puhtain paperein. Klikkaamalla epäonnistunutta testitapausta saadan näkyviin Failure Trace, joka kertoo missä mentiin metsään. Runs kohta tarkoittaa että kaikki testit ajettiin läpi 4 kertaa. Errors kohta kertoo tapahtuiko testauksessa virheitä. Kuva 1.1 JUnit -näkymä Nyt tehdyistä testeistä pitäisi löytyä kaksi ei tahallista virhettä. TestAddSuccess() ja TestSearchSuccess()- testitapausten pitäisi päätyä failureen.