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?

È stato utile?

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:

  1. mi piacerebbe fare genitore configurazione final al fine di vietare preminente accidentale.
  2. userei annotazioni @BeforeMethod. Sono disponibili dal TestNG 5.0. Naturalmente, per le versioni precedenti si costretti a utilizzare @Configuration.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top