Kurssiesittely | Luennot | Harjoitukset |
---|
Imuroi Maven ja pura se haluamaasi asennuskansioon. Laitoksen koneilla esim. ~/opt/maven
Lisää Mavenin sijainti PATH:iin noudattaen Mavenin README-tiedoston ohjeita. Laitoksen koneilla lisää kotihakemistosi .bashrc-tiedostoon esim. rivi export PATH="$HOME/opt/maven/bin:$PATH" jonka lisäyksen jälkeen pitää kirjautua uudestaan sisään tai ainakin käynnistää terminaali uudestaan. Sen lisäksi .profile-tiedostossa pitää olla rivi . ~/.bashrc
Varmista myös, että JAVA_HOME-ympäristömuuttuja osoittaa koneelle asennettuun JDK:hon. Laitoksen koneilla näin näkyy jo olevan valmiiksi.
Tarkista, että Mavenin asennus toimii komennolla mvn --version
Kun Maven on asennettu, niin voit ajaa Maven-projektin sisältämät JUnit-testit ajamalla komennon mvn test projektin juurikansiossa. Mavenin käytäntöjen mukaisesti tuotantokoodit ovat kansiossa /src/main/java
testikoodit kansiossa /src/test/java
.
Tetris-harjoitustyön tapauksessa projektissa on aluksi yksi testi, joka ei mene läpi. Tällöin mvn test antaa ilmoituksen:
Results : Failed tests: test_Is_empty(tetris.FallingBlocksTest$A_new_board) Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [ERROR] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] There are test failures.
Kun korjaat koodin (muuta tiedostossa Board.java
rivi s += "?";
muotoon s += ".";
), niin sen jälkeen mvn test ilmoittaa kaikkien testien menevän läpi:
Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------
Tämän kurssin harjoituksissa annetut Maven-projektit on konfiguroitu siten, että saat paketoitua niiden lähdekoodit helposti ZIP-tiedostoksi komennolla mvn clean package, minkä jälkeen projektin /target
kansioon ilmestyy -src.zip
-päätteinen tiedosto.
Alla on esimerkki JUnit 3 -testistä. Se perii luokan junit.framework.TestCase
ja sen luokkanimi päättyy sanaan "Test", mistä Maven tietää ajaa siinä olevat testit.
import junit.framework.*; public class SampleTest extends TestCase { public void testThisShouldPass() { int expected = 1; int actual = 1; assertEquals(expected, actual); } public void testThisShouldFail() { int expected = 1; int actual = 2; assertEquals(expected, actual); } }
Kun testit ajetaan, niin JUnit luo ilmentymän SampleTest:stä ja kutsuu ensimmäistä metodia, jonka nimi alkaa sanalla "test". Jos metodi ei heitä poikkeusta, niin testi menee läpi. Sen jälkeen JUnit jättää aiemmin luodun SampleTest-ilmentymän roskienkerääjälle, luo uuden ilmentymän SampleTest:stä ja kutsuu sen seuraavaa metodia, joka alkaa sanalla "test". Näin kutsutaan luokan kaikkia testimetodeja. Jos luokassa on määritetty setUp()
tai tearDown()
metodit (ks. TestCase-kantaluokka), niin niitä kutsutaan ennen ja jälkeen testimetodin.
TestCase-kantaluokassa on useita assert-metodeja, joilla voi esittää väittämiä testattavan koodin tilasta. Esimerksiksi assertEquals
-metodi heittää poikkeuksen, jos sille annetut kaksi arvoa eivät ole samoja. Katso TestCase:n dokumentaatiosta lisätietoja.
Lisää ohjeita saa JUnitin kotisivuita.
Tämän kurssin harjoitustehtävissä annetut esimerkkikoodit käyttävät enimmäkseen JUnit 3 -tyylisiä testejä. JUnit 4:ssä testiluokan ei tarvitse periä TestCase:a, eikä metodien tarvitse alkaa sanalla "test", vaan testimetodit merkitään org.junit.Test
-annotaatiolla. Jos haluat, niin voit kirjoittaa testisi JUnit 4 -tyylillä - se on melko pitkälti mielipidekysymys. JUnit 4 on täysin taaksepäinyhteensopiva.
Lisäksi tämän kurssin Tetris-harjoitustyössä testit on on järjestetty hieman epätyypillisesti staattisiksi sisäluokiksi, koska JUnit on liian rajoittunut eikä tue testien hierarkista organisointia specification-tyyliin kovin hyvin (toisin kuin esim. RSpec, Specs ja JDave). Tämän kurssin jälkeen voitte valita mieluisenne testiframeworkin, mutta tämän kurssin aikana käytetään JUnit:ia, koska se on erittäin yksinkertainen ja de facto -asemassaan yleisesti tuettu.
Imuroi IntelliJ IDEA ja asenna se.
Laitoksena koneilla pitää konfiguroida ympäristömuuttuja JDK_HOME lisäämällä .bashrc tiedostoon esim. export JDK_HOME="$JAVA_HOME"
Avaa Maven-projektin pom.xml tiedosto IDEAssa "File | Open Project".
Konfiguroi JDK kohdasta "File | Project Structure | Platform Settings | JDKs" ja tarkista että se on valittuna sivulla "File | Project Structure | Project Settings | Project".
Testit saa ajettua IDEAssa konfiguroimalla "Run | Edit Configurations | + | JUnit" ja ajamalla kaikki JUnit-testit projektissa komennolla "Run | Run".
Imuroi NetBeans IDE, Java SE Bundle ja asenna se.
Avaa Maven-projekti NetBeansissa "File | Open Project".
Testit saat ajettua valikosta "Run | Test Project".
Imuroi Eclipse IDE for Java Developers ja asenna se.
Eclipse ei suoraan tue Mavenia, mutta Maven tukee Eclipseä. Jos ajat komennon mvn eclipse:eclipse jonkin Maven-projektin juuressa, niin Maven generoi Eclipse-projektitiedostot sille projektille.
Lisäksi Eclipseen pitää lisätä ympäristömuuttuja M2_REPO osoittamaan kansioon ~/.m2/repository asetusikkunassa "Window | Preferences | Java | Build Path | Classpath Variables".
Testit saa ajettua Ecplipsessä konfiguroimalla "Run | Run Configurations | JUnit" ajamaan kaikki JUnit 4 -testit projektissa.