Come posso evitare la duplicazione del codice nei test unitari?
Usando Java e JUnit supponiamo di avere qualcosa di simile a questo:
public interface Arithmetic<T> {
public T add(T a, T b);
public T sub(T a, T b);
}
public void IntegerArithmetic<Integer> {
//
}
public void DoubleArithmetic<Double> {
//
}
E la classe di test:
public class TestArith {
private Arithmetic<Integer> arith;
@Before
public void init() {
Arithmetic<Integer> arith = new IntegerArithmetic();
Integer term1 = 4;
Integer term2 = 3;
}
@Test
public void testAdd() {
assertEquals(7, arith.add(term1, term2));
}
@Test
public void testAdd() {
assertEquals(1, arith.sub(term1, term2));
}
}
Il problema è che la classe di test per la classe DoubleArithmetic dovrebbe apparire esattamente la stessa; l'unica differenza è in @Before init () in cui viene eseguita l'inizializzazione del tipo concreto. Come si può evitare questa duplicazione del codice?