Cucumberバージョン
cucumber-java
または cucumber-java8
に使用しているバージョンと同じバージョンを cucumber-junit
に使用するようにしてください。
Then
ステップは、アプリケーションからの実際の結果と予想される結果を比較するアサーションを行う必要があります。
Cucumberにはアサーションライブラリは付属していません。代わりに、単体テストツールのassertメソッドを使用してください。
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に似ています。CucumberでTestNGを使用する方法の詳細な例については、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では、false
ではなくfail if false
と記述します。これは、false
がテストの予期される成功結果であり、したがってエラーではない可能性があるためです。
ただし、アプリケーションが例外をどのように処理するかをテストしたい場合があるため、その例外をCucumberで処理したくありません。そのような状況では、@allow-rescue
タグを使用してください。
Test::Unit
の assert
メソッドを使用する場合は、それらを World
に混ぜることができます。
require 'test/unit/assertions'
World(Test::Unit::Assertions)
このドキュメントの改善にご協力ください。 このページを編集。