2016-06-08 152 views
11

我试图强化规范内量角器测试之间的独立性。 要检测测试是否依赖于先前测试引入的状态,我想按随机顺序运行这些测试。量角器测试可以按随机顺序运行吗?

有没有办法告诉量角器测试的顺序可以随机化?

我发现茉莉at pivotaltracker

+1

单元测试应保证测试后开始相同的测试之前的状态 - 初始化,测试,断言,还原。我更倾向于确保你的测试是正确的,而不是随机化他们。 – Enigmativity

+2

我想确保在添加新测试时它们是独立的。因此,引入随机因子有助于识别不符合此要求的测试。 – TomVW

+0

随机化他们不会确保他们是独立的。这就像随机发送汽车通过一个十字路口 - 你可能会碰撞,你可能不会 - 但道路绝对不是独立的。你没有证明任何东西。你真的需要确保你放下完全独立的道路,以确保它们是独立的。 – Enigmativity

回答

2

截至17年10月10日,可以在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 

}); 
相关问题