Inizializzazione della variabile all'interno del metodo setUp () o metodo di test effettivo quando sono necessarie modifiche?

2

Sto iniziando a girare intorno a PHPunit.

Le mie domande sono le seguenti.

Ogni volta che uso variabili che non cambiano nel mio range di metodi di test, posso inizializzarle nel mio metodo setUp() . Altrimenti, se cambiano, dovrei piuttosto metterli direttamente nei miei metodi di test.

La mia ipotesi è più o meno giusta?

  • Ho inserito il nome utente nel metodo setUp() perché non cambierà.
  • La password arriva direttamente nelle funzioni perché deve essere modificata per non superare il test.

Esempio:

protected $username;

protected function setUp()
{
    $this->username = "Bob";
}

public function testUserCanLogInSuccessfully()
{
    $password = "Right_Password";   
    // code
}

public function testUserCanNotLogInSuccessfully()
{
    $password = "Wrong_Password";
    //code
} 
    
posta Magiranu 17.11.2017 - 13:02
fonte

2 risposte

1

L'impostazione di prova viene utilizzata per creare lo stato iniziale comune di tutti i test unitari nell'ambito corrente (in questo caso, una classe).

I dati nelle variabili possono cambiare come parte del test. Se ti ritrovi a copiare e incollare il codice che precede l'asserzione in ogni metodo di test della classe, è un buon indicatore che dovrebbe andare nella configurazione.

Allo stesso modo, se ti ritrovi a copiare e incollare il codice in ogni test dopo le asserzioni, allora quel codice potrebbe essere messo anche nella rimozione della tua classe di test.

Mi piace pensare al "setup" come un tipo di metodo costruttore-ish eseguito prima di ogni test, e il "teardown" come metodo distruttore-ish (o finalizzatore-ish) eseguito dopo ogni test.

    
risposta data 17.11.2017 - 13:46
fonte
0

Nei test di stile xUnit una classe di test rappresenta uno scenario di test, con ciascun metodo di prova che asserisce qualcosa all'interno di tale scenario. Se pensi ai tuoi test in uno schema "Given ... When ... Then ...", la classe test rappresenterebbe lo scenario "Given".

I metodi setUp() e tearDown() impostano e distruggono tale scenario, in modo che ogni metodo di prova sia isolato dagli altri metodi di test.

Tuttavia, questo schema di organizzazione del test viene usato raramente. Più spesso, una classe di test verrebbe utilizzata per unità testata e non c'è necessariamente alcuna configurazione condivisa tra due metodi di test. Quindi nella stragrande maggioranza dei casi, setUp() e teardown() rimarranno vuoti.

Nel tuo caso, sembra che tu abbia un tipo di scenario lungo le linee "Dato che il mio nome è Bob qualsiasi mia password è Right_Password ...", e i tuoi metodi di test sono:

  • ... Quando effettuo l'accesso con Right_Password, ho effettuato l'accesso con successo.
  • ... Quando accedo con Wrong_Password, il mio login viene rifiutato.

Questo è un ottimo utilizzo della funzionalità setUp ().

    
risposta data 17.11.2017 - 13:54
fonte

Leggi altre domande sui tag