2015-03-06 9 views
16

Есть ли способ выйти из набора тестов и прекратить выполнение дополнительных тестовых примеров, если тестовый пример не работает в транспортир?Как остановить транспортир от запуска дальнейших тест-систем при сбое?

+1

Какую рабочую рамку вы используете в транспортире? («Жасмин» по умолчанию) –

ответ

15

В случае рамки тестирования jasmine вы не первый спрашиваете об этом.

Есть соответствующее открытое обсуждение/вопросы о выходе после первой неудачи, --fail-fast варианта:

Короче говоря, это открытое выпуск, и в какой-то день jasmine будет иметь встроенную функциональность. В настоящее время используйте сторонний модуль jasmine-bail-fast.

Кроме того, есть удобная установка жасмина realtimeFailure. Если вы установите его на true, это не пропустит весь тестовый прогон, но он покажет ошибки в реальном времени - сразу же после этого - это может покровиться вашим прецедентом. Установите его в jasmineNodeOpts:

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

    ... 

    jasmineNodeOpts: { 
     realtimeFailure: true 
    } 
} 
+0

Awesome !!! «Жасмин-подлог» работает для меня. –

+0

В соответствии с этим вопросом: http://stackoverflow.com/questions/22119193/stop-jasmine-test-after-first-expect-fails Жасмин теперь имеет функцию с 2.3.0. В комментарии к http://stackoverflow.com/a/31809311/571380 человек упоминает 'stopSpecOnExpectationFailure', который должен быть помещен в конфигурацию. Однако я попробовал 'export.config = {..., jasmineNodeOpts: {stopSpecOnExpectationFailure: true}}' в моем файле conf.js, и это не сработало для меня. – Machtyn

+2

@Machtyn, не могли бы вы создать отдельный вопрос, и давайте посмотрим, теперь ли это встроено и работает? Благодаря! – alecxe

5

jasmine-bail-fast не работает в моем случае. Не уверен, что это связано с некоторыми конфликтами с моими другими плагинами отчетов.

В случае, если у кого-либо проблемы. Вы можете попробовать protractor-fast-fail

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

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

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

работал отлично для меня.

+2

тоже здесь, для меня также под залог не работал, но транспортир -fast-fail работал отлично. – FarazShuja

0

Вам не нужны все сторонние плагины. Используйте родной process.exit().

Пример кода:

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

прибыль.

+0

Правильно ли это выход на 100%? То есть это вызовет все функции очистки жасмина и транспортира, так что все закрыто правильно? – DarthVanger

+0

Нет, не будет. Он просто останавливает процесс сервера –

3

Вот мое решение пропустить тесты на первом провале с помощью Jasmine 2 и Protractor. Надеюсь, это поможет.

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() 
        }); 
       } 
      }; 
     }); 
    } 
}; 
Смежные вопросы