2016-06-08 2 views
11

Я пытаюсь обеспечить независимость между испытаниями транспортира в спецификации. Чтобы определить, зависят ли тесты от состояния, введенного предыдущим тестом, я хотел бы запустить эти тесты в произвольном порядке.Могут ли тесты транспортиров работать в случайном порядке?

Есть ли способ рассказать транспортир, порядок испытаний может быть рандомизирован?

я нашел запрос функции для Жасмин at pivotaltracker

+1

Модульное тестирование должно гарантировать, что старт после тестирования такое же, как состояние перед тестированием - инициализация, проверить, утвердить, восстановить. Я был бы более склонен к тому, чтобы ваш тест был прав, чем рандомизировать их. – Enigmativity

+2

Я хочу убедиться, что при добавлении новых тестов они независимы. Поэтому введение случайного фактора поможет идентифицировать тесты, которые не соответствуют этому требованию. – TomVW

+0

Рандомизация их не гарантирует, что они независимы. Это было бы похоже на отправку автомобилей случайно через перекресток - вы можете получить сбой, а вы не можете, но дороги определенно не являются независимыми. Вы ничего не доказываете. Вам действительно нужно убедиться, что вы заложите дороги, которые полностью отделены друг от друга, чтобы убедиться, что они независимы. – Enigmativity

ответ

2

По состоянию на 10/10/17, можно установить параметр в protractor.conf.js JasmineNodeOpts для запуска спецификаций в полуслучайном порядке при использовании Jasmine, без необходимости кода.

В вашем protract.conf.js файл добавить следующий JSon блок:

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

Source

7

Вы могли бы выполнять функции в случайном порядке путем перестановки их в конце пакета:

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 

}); 
Смежные вопросы