【问题标题】:Can protractor tests be run in a random order?量角器测试可以随机运行吗?
【发布时间】:2017-10-10 21:16:02
【问题描述】:

我正在尝试强制规范内量角器测试之间的独立性。 为了检测测试是否取决于先前测试引入的状态,我想以随机顺序运行这些测试。

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

我找到了 Jasmine at pivotaltracker 的功能请求

【问题讨论】:

  • 单元测试应该保证测试后的启动与测试前的状态一致——初始化、测试、断言、恢复。我更倾向于确保你的测试是正确的,而不是随机化它们。
  • 我想确保在添加新测试时,它们是独立的。因此,引入随机因素将有助于识别不符合此要求的测试。
  • 随机化它们并不能确保它们是独立的。这就像让汽车随机通过一个十字路口——你可能会撞车,也可能不会——但道路绝对不是独立的。你没有证明什么。您确实需要确保铺设彼此完全分开的道路,以确保它们是独立的。
  • 这也是一种在已经存在的套件中清除依赖测试的可靠方法。我在这里和你在一起。

标签: angularjs unit-testing protractor


【解决方案1】:

您可以通过在套件末尾打乱它们以随机顺序执行规范:

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

});

【讨论】:

    【解决方案2】:

    截至 2017 年 10 月 10 日,可以在 protractor.conf.js JasmineNodeOpts 中设置一个设置,以便在使用 Jasmine 时以半随机顺序运行规范,无需代码。

    在您的 protract.conf.js 文件中添加以下 json 块:

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

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 2014-09-17
      • 2018-02-24
      • 1970-01-01
      相关资源
      最近更新 更多