量角器 - 当断言失败时,测试执行会突然停止

时间:2017-05-17 07:24:41

标签: protractor chai e2e-testing cucumberjs

黄瓜步骤定义

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ListView
            android:id="@+id/listview1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        </ListView>

        <ListView
            android:id="@+id/listview2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        </ListView>
    </LinearLayout>

</android.support.v4.widget.NestedScrollView>

控制台错误:

  

[12:17:13] E / launcher - 预计错误等于真   [12:17:13] E / launcher - AssertionError:预期false等于true       在D:\ Mercurial \ PromotionFinder \ PromotionFinder \ PromotionFinder.Web \ features \ steps \ cucumber.js:178:31       at elementArrayFinder_.then(C:\ Users \ abhishes \ AppData \ Roaming \ npm \ node_modules \ protractor \ lib \ element.ts:840:22)       在ManagedPromise.invokeCallback_(C:\ Users \ abhishes \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ promise.js:1366:14)       在TaskQueue.execute_(C:\ Users \ abhishes \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ promise.js:2970:14)       在TaskQueue.executeNext_(C:\ Users \ abhishes \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ promise.js:2953:27)       在asyncRun(C:\ Users \ abhishes \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ promise.js:2813:27)       在C:\ Users \ abhishes \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ selenium-webdriver \ lib \ promise.js:676:7       at process._tickCallback(internal / process / next_tick.js:103:7)   [12:17:13] E / launcher - 进程已退出,错误代码为199

量角器配置

Then(/^Submit Button is disabled$/, function (done) {
    element(by.buttonText('Search')).isEnabled().then(function (result) {

        expect(result).to.equal(false);
        done();
    });
})

每当断言失败时,测试执行突然停止,并且不会生成测试报告。

我正在使用 量角器版本 - 5,cucumberjs版本2.0.0和chai&amp; chai-as-asseised for assertion

我想要以下信息:

1个场景(1个失败) 5个步骤(1个失败,3个跳过,1个过去)

和result.json创建,以便我可以在teamcity中看到结果。

2 个答案:

答案 0 :(得分:1)

我还没有使用过CucumberJS 2.0.0,因为它是RC版本,我在网上看到了一些麻烦。 2.1.0是一个稳定的版本,所以也许可以解决问题。

当我查看你的代码时,我认为这应该可以解决问题。

// With callbacks
Then(/^Submit Button is disabled$/, function(done) {
  var searchButton = element(by.buttonText('Search'));
  return expect(searchButton.isEnabled()).to.eventually.equal(false).and.notify(done);
});

// With Promises
Then(/^Submit Button is disabled$/, function() {
  var searchButton = element(by.buttonText('Search'));
  return expect(searchButton.isEnabled()).to.eventually.equal(false);
});

希望有所帮助

答案 1 :(得分:0)

您需要捕获异常。 有两种方法可以做到这一点。 在返回时捕获异常...

Then(/^Submit Button is disabled$/, function (done) {
    element(by.buttonText('Search')).isEnabled().then(function (result) {

        expect(result).to.equal(false);
        done();
    }).catch(function(err){
            return;
    });
});

其他方法是通过在函数定义中添加回调作为参数。

Then(/^Submit Button is disabled$/, function (done, callback) {
    element(by.buttonText('Search')).isEnabled().then(function (result) {

        expect(result).to.equal(false);
        done();
    }).catch(function(reason) {
            callback(reason);
    });
});