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?

Foi útil?

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:

  1. Eu faria configuração dos pais final Para proibir a substituição acidental.
  2. 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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top