JUnit-pikaohje

Junit3.8.1 on Javalle suunniteltu testauskehys, jonka avulla on helppo tehdä toistettavia yksikkötestauksia.

Alkuunpääsy

Luo JUnitille asennushakemisto. Vaihda sinne ja hae JUnit3.8.1 komennolla
wget http://www.cs.helsinki.fi/group/ohtu/resurssit/junit3.8.1.zip
ja pura se komennolla
unzip junit3.8.1.zip
Toimiakseen JUnit haluaa junit.jarin ja JUnitin asennushakemiston classpathiin (korvaa $JUNIT_HOME omalla asennushakemistollasi, tässä oletetaan, että asennushakemisto on kotihakemistosi alla), se onnistuu komennolla
export CLASSPATH=$CLASSPATH:~/$JUNIT_HOME/junit.jar:~/$JUNIT_HOME/
Toimivuuden voi testata komentorivillä komennolla
java junit.textui.TestRunner junit.samples.AllTests
tai graafisen kilkkeen kautta komennolla
java junit.swingui.TestRunner junit.samples.AllTests
Jos asennus on onnistunut, pitäisi sen palauttaa seuraavanlaista
kirvela@melkki:~$ java junit.textui.TestRunner junit.samples.AllTests
.........................................
.........................................
.....................................
Time: 0,671

OK (119 tests)

kirvela@melkki:~$

Classpath lisätään Anttiin ja kun muutokset on tehty, päivitetään tämä ohje.

Esimerkkitesti

Simppeli esimerkkitesti joka demonstroi JUnitin käyttöä. Laitetaan esimerkki $JUNIT_HOME:n alle hakemistoon testing. Testi ajetaan komennolla

java junit.textui.TestRunner testing.SimpleTest
Itse testiluokka
package testing; //paketin nimi

import junit.framework.*; /importoidaan JUnitin framework
import java.util.*;

public class SimpleTest extends TestCase { // testaus luokka extendoi JUnitin TestCase-luokan

    private Collection myCollection;

    public SimpleTest(String name) {
        super(name);
    }

    protected void setUp() { // Alustetaan objekti
        myCollection = new ArrayList();
    }

    protected void tearDown() {  // Lopetetaan objekti
        myCollection.clear();
    }

    public void testEmptyCollection() { // Testataan onko lista tyhjä
	assertTrue("The collection is empty.", myCollection.isEmpty());
    }

    public void testOneItemCollection() {  // lisätään listaan yksi ja tarkistetaan onko se tyhjä
        myCollection.add("itemA");
	assertEquals("The size of the collection is 1.", 1, myCollection.size());
    }
}

Edellä oleva testi menee läpi ja tulostaa, että kaksi testiä onnistui. Jos testOneItemCollectionin assertEquals-metodin eteen lisätäänkin myCollection.add("ItemB"); ei toinen testi mene enää läpi ja se tulostaa

kirvela@melkki:~/ohtu/junit3.8.1/testing$ java junit.textui.TestRunner testing.SimpleTest
..F
Time: 0,003
There was 1 failure:
1) testOneItemCollection(testing.SimpleTest)junit.framework.AssertionFailedError: The size of the collection is 1. expected:<1> but was:<2>
        at testing.SimpleTest.testOneItemCollection(SimpleTest.java:29)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

FAILURES!!!
Tests run: 2,  Failures: 1,  Errors: 0

kirvela@melkki:~/ohtu/junit3.8.1/testing$

Testiluokkien sijoittelusta

Mozart-moduulin juureen tulee src-hakemiston rinnalle tests-hakemisto, jonka hakemistorakenne on identtinen src:n kanssa. Jokaiselle luokalle tehdään test-hakemistoon *Test.java niminen testiluokka. Luokan sisällä testattavat metodit nimetään etuliitteellä test samanlaisiksi, kuin testattavan luokan metodit ovat. Eli metodi testCountPitch() testaa metodin countPitch. Testiluokat kuuluvat samaan pakettiin kuin testattavat luokat.

Ohje ei ole vielä valmis, mutta lisää informaatiota on JUnitin asennushakemiston doc-kansiossa.

Mozart-pääsivu