TestNG, annotazione “beforeTestMethod” e di esclusione
Domanda
Per le mie prove sto usando un MyTestBase
classe base che definisce un metodo setup()
che fa alcune preparazioni di base:
public class MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setup() {
// do base preparations
}
}
Ora ho alcune classi di test più specifici che hanno a che fare i loro preparativi. Ci sono diversi modi come implementare questa.
ho potuto utilizzare @Override
:
public class MySpecialTestBase extends MyTestBase {
@Override
protected void setup() {
super.setup();
// do additional preparations
}
}
... oppure potrei usare un metodo di installazione separata:
public class MySpecialTestBase extends MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setupSpecial() {
// do additional preparations
}
}
C'è un modo preferito per implementare questo?
Soluzione
Io preferirei utilizzare @Configuration
annotazione. @Override
e super
sono più fragili. Si può dimenticare di chiamare super.setup()
, o chiamare al suo posto sbagliato. Nel frattempo, utilizzando il metodo separato con @Configuration
permette di scegliere più appropriato di denominazione per il metodo di impostazione del bambino, se necessario, e si ottiene ordine di impostazione garantita da TestNG (genitore, allora bambino).
Altri due punti:
- mi piacerebbe fare genitore configurazione
final
al fine di vietare preminente accidentale. - userei annotazioni
@BeforeMethod
. Sono disponibili dal TestNG 5.0. Naturalmente, per le versioni precedenti si costretti a utilizzare@Configuration
.