web-dev-qa-db-ja.com

分度器が失敗したときにさらにテストケースを実行するのを停止する方法は?

分度器でテストケースが失敗した場合、テストスイートを終了し、さらにテストケースの実行を停止する方法はありますか?

22
Aman Gupta

jasmineテストフレームワークの場合、最初に質問するのはあなたではありません。

最初の失敗後の終了に関して、関連する公開討論/問題があります、--fail-fastオプション:

要するに、これは未解決の問題であり、いつかjasmineに機能が組み込まれるでしょう。現在、サードパーティの jasmine-bail-fast モジュール。

それとは別に、便利なrealtimeFailureジャスミン設定があります。 trueに設定すると、テスト全体が失敗することはありませんが、リアルタイムで(発生直後に)エラーが表示されます。これにより、ユースケースがカバーされる可能性があります。 jasmineNodeOptsに設定します:

exports.config = {
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub',

    ...

    jasmineNodeOpts: {
        realtimeFailure: true
    }
}
17
alecxe

jasmine-bail-fast私の場合はうまくいきませんでした。他のレポートプラグインとの競合が原因かどうかはわかりません。

誰かが同じ問題を抱えている場合。 protractor-fast-fail を試すことができます

exports.config = {
  plugins: [{
    package: 'protractor-fail-fast'
  }],

  onPrepare: function() {
    jasmine.getEnv().addReporter(failFast.init());
  },

  afterLaunch: function() {
    failFast.clean(); 
  }  
}

私にとって完璧に働いた。

9
Linh Pham

Jasmine 2と分度器で最初に失敗したときにテストをスキップするための私のソリューションを次に示します。それが役に立てば幸い。

exports.config = {
    onPrepare: function () {
        //skip tests after first fail
        var specs = [];
        var orgSpecFilter = jasmine.getEnv().specFilter;
        jasmine.getEnv().specFilter = function (spec) {
            specs.Push(spec);
            return orgSpecFilter(spec);
        };
        jasmine.getEnv().addReporter(new function () {
            this.specDone = function (result) {
                if (result.failedExpectations.length > 0) {
                    specs.forEach(function (spec) {
                        spec.disable()
                    });
                }
            };
        });
    }
};
8
Daniel Schwab

これらすべてのサードパーティのプラグインは必要ありません。ネイティブprocess.exit()を使用します。

コード例:

it("test", function()
{
   ...
   if(isExit)
   {
      browser.driver.close().then(function()
      {
         process.exit(1);
      });
   }
});

利益。

4