Scrivo spesso test quando ho bisogno di impostare l'oggetto dati per i test di integrazione che coinvolgono poche pagine con i moduli. Qui ogni modulo in una pagina può essere rappresentato da una classe di oggetto dati diversa. Ci sono momenti in cui il test finisce nel riempire gli stessi dati per una pagina specifica mentre lo si modifica per altre pagine e la convalida del flusso generale. Ho pensato invece di impostare l'oggetto dati ogni volta dal metodo di prova, posso sfruttare il blocco di inizializzazione dell'istanza per impostare i dati per i test. Qui ho elencato una versione più piccola di test che di solito scrivo -
Questa mia classe di dati che contiene dati per i valori del modulo - casella di testo, menu a discesa, ecc. Non ho mantenuto i setter per brevità -
public class DataClass {
private int i;
private int j;
public DataClass() {
i=1;
j=1;
}
public int getI(){
return i;
}
public int getJ(){
return j;
}
}
Di seguito è riportata la classe helper che viene utilizzata dalla classe di test per compilare i dati del modulo nella pagina -
public class WorkerClass {
private DataClass data;
public void setData(DataClass data){
this.data = data;
}
public int add() {
return data.getI()+data.getJ();
}
public int substract() {
return data.getI()-data.getJ();
}
}
Ed ecco il metodo di prova. Si noti che invece di chiamare setData di WorkerClass in ogni metodo di test ho usato il blocco di inizializzazione dell'istanza -
public class TestClass {
private DataClass data = new DataClass();
WorkerClass workerClass = new WorkerClass();
{
workerClass.setData(data);
}
@Test
public void testAddition() {
assert workerClass.add()==0:"addition Failed";
}
@Test
public void testSubstraction() {
assert workerClass.substract()==0:"substraction failed";
}
}
La mia domanda è, sto abusando del blocco di inizializzazione dell'istanza e dovrei invece chiamarlo da ogni metodo di test, anche se tutto il metodo di test richiede lo stesso insieme di dati?