Cucumber 版本
請確保您使用的 cucumber-junit
版本與 cucumber-java
或 cucumber-java8
的版本相同。
您的 Then
步驟應進行斷言,比較預期結果與應用程式的實際結果。
Cucumber 不包含斷言函式庫。請改用單元測試工具中的斷言方法。
當使用 cucumber-junit-platform-engine 時,您可以自由選擇任何斷言函式庫。例如
當使用 JUnit 4 執行 Cucumber 時,我們建議使用 JUnit 4 的 assert*
方法。
如果您使用 Maven,請將以下內容加入您的 pom.xml
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>5.11.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>7.20.1</version>
<scope>test</scope>
</dependency>
以下是使用 assertEquals
的範例
import static org.junit.Assert.*;
public class Example {
@Then("the result should be {int}")
public void the_result_should_be(int expectedResult) {
assertEquals(expectedResult, result);
}
}
如需更多關於如何使用 JUnit 斷言的範例,請參閱 JUnit Wiki。
您也可以使用 TestNG 的斷言。
如果您使用 Maven,請將以下內容加入您的 pom.xml
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.10.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>7.20.1</version>
<scope>test</scope>
</dependency>
TestNG 斷言與 JUnit 類似。如需更多關於如何將 TestNG 與 Cucumber 一起使用的範例,請參閱 calculator-java-testng 範例。
如需更多關於如何使用 TestNG 斷言的資訊,請參閱 TestNG 文件。
我們建議使用 Node.js 內建的 assert 模組。
const assert = require('assert')
Then('the result should be {word}', function (expected) {
// this.actual is typically set in a previous step
assert.equal(this.actual, expected)
})
如果您願意,可以使用任何其他斷言函式庫。以下是使用 Chai 的範例
const { expect } = require('chai')
Then('the result should be {word}', function (expected) {
expect(this.actual).to.eql(expected)
})
我們建議使用 RSpec 進行斷言。
將 rspec-expectations
gem 加入您的 Gemfile
。Cucumber 將自動載入 RSpec 的匹配器和期望方法,使其在您的步驟定義中可用。例如
Given /^a nice new bike$/ do
expect(bike).to be_shiny
end
如果您想設定 RSpec,您還需要將 rspec-core
gem 加入您的 Gemfile
。然後,您可以將設定加入您的 features/support/env.rb
,例如
RSpec.configure do |config|
config.expect_with :rspec do |c|
c.syntax = :expect
end
end
請注意,測試/斷言/期望會「通過」或「失敗」(引發錯誤),而「失敗」**不**等同於 false
。除了「失敗」之外的任何結果都是通過。
當在 RSpec 中,something.should_be 0
而實際上不是時,傳回的是錯誤例外,而不是布林值。在 Cucumber 中,寫入的是 fail if false
而不僅僅是 false
。這是因為 false
可能是測試預期的成功結果,因此不是錯誤。
然而,有時我們希望測試我們的應用程式如何處理例外狀況,因此不希望該例外狀況被 Cucumber 處理。對於這種情況,請使用 @allow-rescue
標籤。
如果您偏好使用 Test::Unit
的 assert
方法,您可以將它們混合到您的 World
中。
require 'test/unit/assertions'
World(Test::Unit::Assertions)
您可以幫助我們改善此文件。編輯此頁面。