junit Test delle unità usando JUnit

Esempio

Qui abbiamo un Counter classe con metodi countNumbers() e hasNumbers() .

public class Counter {

    /* To count the numbers in the input */
    public static int countNumbers(String input) {
        int count = 0;
        for (char letter : input.toCharArray()) {
            if (Character.isDigit(letter))
                count++;
        }
        return count;
    }

    /* To check whether the input has number*/
    public static boolean hasNumber(String input) {
        return input.matches(".*\\d.*");
    }
}

Per testare questa classe, possiamo usare il framework Junit. Aggiungi junit.jar nel tuo percorso di classe del progetto. Quindi creare la classe Test case come di seguito:

import org.junit.Assert; // imports from the junit.jar
import org.junit.Test;

public class CounterTest {

    @Test // Test annotation makes this method as a test case
    public void countNumbersTest() {
        int expectedCount = 3;
        int actualCount = Counter.countNumbers("Hi 123");
        Assert.assertEquals(expectedCount, actualCount); //compares expected and actual value
    }

    @Test
    public void hasNumberTest() {
        boolean expectedValue = false;
        boolean actualValue = Counter.hasNumber("Hi there!");
        Assert.assertEquals(expectedValue, actualValue);
    }
}

Nel tuo IDE puoi eseguire questa classe come "Junit testcase" e vedere l'output nella GUI. Nel prompt dei comandi è possibile compilare ed eseguire il test case come di seguito:

\> javac -cp ,;junit.jar CounterTest.java
\> java  -cp .;junit.jar org.junit.runner.JUnitCore CounterTest

L'output di una prova di successo dovrebbe essere simile a:

JUnit version 4.9b2
..
Time: 0.019

OK (2 tests)

Nel caso di un fallimento del test, sembrerebbe più simile a:

Time: 0.024
There was 1 failure:
1) CountNumbersTest(CounterTest)
java.lang.AssertionError: expected:<30> but was:<3>
... // truncated output
FAILURES!!!
Tests run: 2,  Failures: 1