junit Pruebas unitarias utilizando JUnit


Ejemplo

Aquí tenemos una clase Counter con métodos countNumbers() y 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.*");
    }
}

Para la prueba unitaria de esta clase, podemos usar el framework Junit. Agregue el junit.jar en la junit.jar de su clase de proyecto. Luego crea la clase de caso de prueba como se muestra a continuación:

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);
    }
}

En su IDE puede ejecutar esta clase como "Junit testcase" y ver el resultado en la GUI. En el símbolo del sistema, puede compilar y ejecutar el caso de prueba de la siguiente manera:

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

El resultado de una ejecución de prueba exitosa debe ser similar a:

JUnit version 4.9b2
..
Time: 0.019

OK (2 tests)

En el caso de una falla de prueba se vería más como:

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