Testng, anotação “beforetestmethod” e substituição
Pergunta
Para meus testes, estou usando uma classe base MyTestBase
definindo um método setup()
Isso faz alguns preparativos básicos:
public class MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setup() {
// do base preparations
}
}
Agora tenho algumas classes de teste mais específicas que precisam fazer seus próprios preparativos. Existem diferentes maneiras de implementar isso.
eu poderia usar @Override
:
public class MySpecialTestBase extends MyTestBase {
@Override
protected void setup() {
super.setup();
// do additional preparations
}
}
... ou eu poderia usar um método de configuração separado:
public class MySpecialTestBase extends MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setupSpecial() {
// do additional preparations
}
}
Existe uma maneira preferida de implementar isso?
Solução
Eu preferiria usar @Configuration
anotação. @Override
e super
são mais frágeis. Você pode esquecer de ligar super.setup()
, ou chame -o em lugar errado. Enquanto isso, usando o método separado com @Configuration
Permite escolher a nomeação mais apropriada para o método de configuração infantil, se necessário, e você receberá o pedido de configuração garantido pelo testng (pai então filho).
Mais dois pontos:
- Eu faria configuração dos pais
final
Para proibir a substituição acidental. - Eu usaria
@BeforeMethod
anotações. Eles estão disponíveis desde o teste 5.0. Claro, para versões mais antigas que você forçado a usar@Configuration
.