wiki:WikiStart
Last modified 11 months ago Last modified on 2017-01-10 11:11:52

ComTest

1. Uutta

2. Ongelma

  • Testaaminen on tärkeää
  • Testien kirjoittaminen ja ylläpitäminen on työlästä
  • Vaikka JUnit helpottaa asiaa, niin testit ovat eri tiedostossa ja koodia muutettaessa unohtuu helposti päivittää testejä
  • Yleensä Java-dokumentaatiosta puuttuu käyttöesimerkit
  • Entä jos "olio" olisi helppo suunnitella esimerkkien kautta?

3. ComTest projekti

Projektin tarkoituksena on luoda ohjelmisto java-sorsakoodin (jatkossa minkä tahansa kielen) kommentteihin kirjoitettujen testitapausten suorittamiseen.

Tällä hetkellä projekti on makrokielen sekä Eclipse pluginin testaamisvaiheessa. Tallessa on alkuperäisiä satunnaisia IdeoitaJaToivomuksia.

Seuraava vaihe on suorittaa käyttäjätestejä ja vertailuja eri mm. JUnitia ja ComTestiä käyttävien kesken.

4. Makrokieli

Makrokielen nykyinen dokumentti

Tehtävänä oikeastaan ensin määritellä "makrokieli", jolla testit on helppo kirjoittaa. Ideana olisi siis, että testitapaukset toimivat samalla esimerkkinä "olion" käytöstä JavaDociin mennessään ja niiden lisääminen ja ylläpito olisi niin helppoa etteivät testit sen takia jäisi kirjoittamatta.

Makrokielen ohjaamana ComTest generoi JUnit-koodia, joka ajetaan normaalina JUnit-testinä. Testiluokkaan voi itse lisätä testimetodeja ja "makrokieli" vaihtaa tarvittaessa makrokielen kirjoittamat osat tuoreempiin.

Osa testiaineistosta voi olla sellaista että se menee JavaDociin kommentteihin ja osa sellaista että siitä generoituu vain testiä.

5. Asennus ja käyttö

Ilman mitään asentamista, voit kokeilla ComTestin toimintaa Copy/Pasteamalla koko testattava ohjelma (luokka) TIM-oppimisympäristön ComTest-pohjaan.

5.0 Käyttö pluginina Eclipsessä

  • Tallenna eclipse/dropins hakemistoon tai omaan Dropins hakemistoosi:
    dropins hakemisto voidaan asettaa esim. Eclipsen käynistyksessä optiolla 
    tai lisäämällä optio eclipse.ini (eclipsen asennushakemistossa) tiedoston loppuun
    -Dorg.eclipse.equinox.p2.reconciler.dropins.directory=e:/config/plg/eclipse/dropins  // vaihda tähän haluamasi dropins hakemisto
    
  • Mac koneilla Eclipsen dropins hakemisto sijaitsee osoitteessa /Applications/Eclipse.app/Contents/Eclipse/
  • Jos vaihdat ComTestin versiosta toiseen ja vaihto ei vaikuta, niin
    Poista hakemistot:
      U:\config\eclipse_jee                                      // tai missä Eclipsen asetukset sitten sinulla onkin
      C:\Documents and Settings\USERNAME\Local Settings\Eclipse  // tai missä käyttäjäprofiilisi onkin
    
  • Tee 5.1:stä asetukset.
  • Ajaminen: oikea nappi ja ComTest (alla ohjeet miten tämän saa pikanäppäimeen)
  • Huom! Pitää toistaiseksi itse tallentaa ennen ajoa

5.1 Alkuvalmistelut

  • Ihan ensimmäisenä pitää Eclipsestä poistaa kommenttien automaattinen muotoilu, koska se muuttaa lainausmerkit html:ksi:
      Window/Preferences/Java/Code style/Formater/New
      Nimi formatoijalle ja kopinti olemasa olevasta
      Edit (tarvittaessa)
      Comments ja tuolta pois Enable comment formating
      (toki riittää poistaa pelkkä lainausmerkkien muuttaminen jos tietää mistä se tehdään, minä en :-)
    
  • Jos haluat testit eri hakemistoon kuin lähdekoodin, niin tee lähdekoodihakemistoon ComTest.ini jossa on kerrottu mihin hakemistoon ja mihin pakettiin testit tehdään:
    #DIRECTORY=dir   
    #PACKAGE=packagename
    
    Esimerkiksi
    #BEFORETESTCLASS= @SuppressWarnings("all")
    #DIRECTORY=test
    #PACKAGE=.test
    
    Jos ini-tiedostoa ei löydy java-tiedoston hakemistosta, kiivetään hakemistohierarkiaa ylöspäin kunnes tuo löytyy tai jos ei löydy, käytetään oletuksia. Ensimmäinen löytynyt tiedosto luetaan ja muista ei välitetä lainkaan. Toki rivit voi lisätä lähdekoodin tiedostoonkin kommentteihin ILMAN * -merkkiä edessä.
  • #BEFORETESTCLASS rivi kannattaa lisätä jos haluaa ettei testitiedostoon tule virheilmoituksia
  • Lisää JUnit 4 testipaketin kirjastoon:
    • Project/Properties/Java Build Path/Add Library/JUnit/JUnit 4 Finish
  • Tee vielä JUnit ajosta oma pikanäppäin, niin testin ajaminen on nopeata (ohje Eclipse 3.4:lle):
    Window/Preferences/General/Keys/
    Filter kohtaan: ComTest.
    Command: ComTest run
    Binding: paina tähän mieleinen yhdistelmä.
    When: Windows
    Mikäli yhdistelmäsi on jossakin käytössä, valitse uusi
    tai tuhoa yhdistelmän vanha käyttötarkoitus.
    

5.2 Käyttö

  • Lisää makrokielen mukaisia kommentteja lähdetiedostoosi, muista että tässä auttaa comtest Ctrl-Space. Pikaesimerkkejä
      olio1 === olio2;                     /// ovatko oliot sisällöltään samoja
      olio1 == olio2 === true;             /// ovatko viitteet samoja
      olio1.compareTo(olio2) < 0 === true; /// onko olio1 pienempi kuin olio2
      kulma ~~~ 3.141592;                  /// onko reaaliluku melkein pii
      jono  ~= "kissa.*puussa";            /// onko jono req.exp mielessä haluttu   
      jono  =R= "(?s)kissa.*puussa";       /// reg.exp toinen muoto, ?s tekee niin ett' .* voi sisältää myös \n 
    
  • Aja ja testaa oikealla napilla ja ComTest/Generate, Run JUnit (ta valitsemallasi pikanäppäimellä)
  • Jos tulee käännösvirheitä, niin katso syntyneestä tiedostonnimiTest.java tiedostosta virheiden kohdat ja korjaa vastaavat ComTest kommenteissa.
  • jos sinulla on tehty pikanäppäin, voit toistaa viimeisimmän ajon tuosta pikanäppäimestä. HUOM! Ei aja tiedostoa jonka kohdalla ollaan, vaan sen joka viimeksi on oikealla napilla ajettu.
  • muista aina myös kokeilla testillä, jossa laitat väärän tuloksen, jotta tiedät että JUnit todella toimii ja ilmoittaa myös virheistä.

5.3 Ongelmia

  • Jos valittaa "No JUnit tests found", niin on unohtunut lisätä projektiin Junit 4 (menusta: Project/Properties/Java Build Path/Add Library/JUnit/JUnit 4 Finish)
  • Jos syntyneessä testitiedostossa on virheitä, katso niiden syy ja korjaa.
  • Jos tulee ongelmia, niin niihin saattaa auttaa kun etsii Eclipsen configuration hakemiston ja tyhjentää sen.
  • Jos valittaa JUnit 3-testeistä, ota oikealla napilla Run As/Run... ja JUnit-kohdan alta poistat testit joissa on Test Runnerina Junit 3 tai vaihda niihin JUnit 4.
  • Avaa syntynyt testitiedosto
      Jos import static org.junit.Assert.*; on tuntematon, niin tarkista
      että Window/Preferences/Java/Compiler on vähintään 5.0, mieluiten 6.x
    
  • Tarkista auttaako:

Window/Preferences/Java/Installed JREs/Edit current JRE/Add External JARs/add JUnit 4

  • Tee yksi testi JUnit: File/New/Other/Java/JUnit/Junit Test Case/New JUnit 4 test. Sitten valitse joku sopiva luokka ja sen metodi testattavaksi ja kokeile että tämä toimii.

5.4 Käyttö ilman pluginia

Käyttö ilman pluginia

5.5 Vanhat Eclipset