Parametrizovani testovi u JUnit-u

 

Parametrizovani testovi U JUnit-u mogu biti korisni kada se radi s tabularnim podatcima. Iako na internetu ima dosta članaka na temu, nisam našao kod koji je moguće jednostavno iskopirati i iskoristiti bez mnogo razmišljanja, s toga ovde prikazujem jedan jednostavan primer.

package com.empoweragile;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;

import static junit.framework.Assert.assertEquals;

@RunWith(Parameterized.class)
public class AddtionTest {


    @Parameterized.Parameters(name = "Addition test: {0}+{1}={2}. Test n° {index}")
    public static Iterable<Object[]> data() {
        return Arrays.asList(new Object[][]{
                {2, 2, 5},
                {-2, -2, -4},
                {2, 0, 2},
                {-5, 0, -6},
                {-3, 3, 0},
        });
    }

    private final int left;
    private final int right;
    private final int expected;

    public AddtionTest(int left, int right, int expected) {
        this.left = left;
        this.right = right;
        this.expected = expected;
    }

    @Test
    public void testAddition() {
        Math math = new Math();
        assertEquals(expected, math.add(left, right));

    }
}

class Math{
    public int add(int left, int right){
        return  left + right;
    }

}

 

Nekoliko napomena

@Parameterized.Parameters anotacija je dostupna od 4.11 verzije JUnit-a i služi da bi generisala čitkije ime testa koje vaša alatka prikazuje kada se test izvrši. Izgleda da se ova verzija još uvek nije propagirala u Maven repozitorijima, tako da sam morao da dodam 4.11-beta-1 verziju kao Maven zavisnu biblioteku („dependency“).  Ukoliko koristite neku raniju verziju JUnit-a, jednostavno traba eliminisati ovu anotaciju, a čitko ime testa ostvariti na neki od ranijih dovitljivih načina:

http://stackoverflow.com/questions/650894/changing-names-of-parameterized-tests

 

Additional information