Jasmine 2.0中的测试用例是否并行运行

时间:2014-09-03 20:14:21

标签: jasmine

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

这是一组我期望在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

2 个答案:

答案 0 :(得分:13)

Jasmine实际上并没有以任何方式并行运行您的规范。但是,如果规范的异步部分需要足够长的时间,内置的时间限制将会导致jasmine开始运行下一个规范,即使可能仍然存在从早期规范运行的代码。

答案 1 :(得分:6)

如果您想并行运行测试并且使用karma作为测试启动器,则可以使用karma-parallel在多个浏览器实例之间拆分测试。它在不同的浏览器实例中运行规范,非常简单,易于安装:

npm i karma-parallel

然后将'parallel'添加到karma.conf.js

中的框架列表中
module.exports = function(config) {
  config.set({
    frameworks: ['parallel', 'jasmine']
  });
};

karma-parallel

披露:我是作者