2016-06-08 32 views
11

Sto cercando di far rispettare l'indipendenza tra i test del goniometro all'interno di una specifica. Per rilevare se i test dipendono o meno da uno stato introdotto da un test precedente, vorrei eseguire questi test in ordine casuale.I test del goniometro possono essere eseguiti in ordine casuale?

C'è un modo per dire al goniometro l'ordine dei test può essere randomizzato?

ho trovato una richiesta di funzionalità per Jasmine at pivotaltracker

+1

Unit testing dovrebbe garantire che l'inizio dopo la prova è la stessa come lo stato prima del test - inizializzare, prova, asserisci, ripristina. Sarei più propenso a garantire che il test sia giusto che randomizzarli. – Enigmativity

+2

Voglio essere sicuro che quando vengono aggiunti nuovi test, sono indipendenti. Quindi introdurre il fattore casuale aiuterebbe a identificare i test che non soddisfano questo requisito. – TomVW

+0

Randomizzarli non garantisce che siano indipendenti. Sarebbe come mandare le macchine a caso attraverso un incrocio - potresti avere un incidente e potresti non farlo - ma le strade non sono sicuramente indipendenti. Non stai provando nulla. Devi davvero assicurarti di stendere strade completamente separate le une dalle altre per assicurarti che siano indipendenti. – Enigmativity

risposta

2

A partire dal 10/10/17, è possibile impostare un'impostazione nel protractor.conf.js JasmineNodeOpts per eseguire le specifiche in ordine semi-casuale quando si utilizza Jasmine, nessun codice necessario.

Nei tuoi protract.conf.js il file aggiungere la seguente blocco JSON:

jasmineNodeOpts?: { 
    ... 
    /** 
    * If true, run specs in semi-random order 
    */ 
    random?: boolean, 
    ... 
    }; 

Source

7

Si potrebbe eseguire le specifiche in un ordine casuale da loro mischiare alla fine della suite:

var shuffle = function (items) { 
    var item, ii;  
    for(var i = 0; i < items.length; i++){ 
    ii = (Math.random() * items.length) | 0; 
    item = items[i]; 
    items[i] = items[ii]; 
    items[ii] = item; 
    } 
} 

describe('Suite', function() { 

    it("should a", function() { 
     console.log("execute a"); 
    }); 

    it("should b", function() { 
     console.log("execute b"); 
    }); 

    it("should c", function() { 
     console.log("execute c"); 
    }); 

    shuffle(this.children); // shuffle the specs 

});