2014-09-03 123 views
6

Jasmine 2.0中的测试是否并行运行?根据我的经验,他们不是但文章,引用Jasmine.js: Race Conditions when using "runs"表明茉莉花并行运行它们,所以我想知道如果我错误地写我的测试。Jasmine 2.0中的测试用例是否并行运行

这是一组测试,我希望在1秒内执行而不是4秒。

describe("first suite", function() { 
    it("first test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 

    it("second test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 
}); 

describe("second suite", function() { 
    it("first test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 

    it("second test", function(done) { 
    expect(true).toBeTruthy(); 
    setTimeout(done, 1000); 
    }); 
}); 

我错过了什么吗?

jsFiddle

+0

您可能想阅读[this discussion](http://stackoverflow.com/questions/2734025/is-javascript-guaranteed-to-be-single-threaded)。我刚刚在Chrome中运行jsFiddle,它“在4.012s内完成”。这可能取决于哪个浏览器以及JS如何实现。 – zerodiff 2014-09-03 21:33:59

+0

没有理由Jasmine不能并行运行异步测试并保持单线程。这是一个[fsFiddle](http://jsfiddle.net/dspigarelliMNDNT/vr5Larxx/),理论上可能是这样的。 – Spig 2014-09-05 14:11:30

回答

8

茉莉花实际上不以任何方式运行规范并行。然而,可能有规范的异步部分需要足够长的时间以至于经过内置时间限制,这将导致茉莉花开始运行下一个规范,即使仍然可能有代码从早期的规范运行。

2

如果您想要并行运行测试,并且使用karma作为测试启动器,则可以使用​​将测试分割到多个浏览器实例中。它运行在规格不同的浏览器实例,非常简单,安装方便:

npm i karma-parallel 

,然后将“平行”在karma.conf.js添加到列表的框架

module.exports = function(config) { 
    config.set({ 
    frameworks: ['parallel', 'jasmine'] 
    }); 
}; 

​​

披露:我是作者