1. 序章

このチュートリアルでは、Scalaを使用したビヘイビア駆動開発(BDD)テストについて説明します。

2. 設定

この記事で使用するライブラリはScalaTestです。 build.sbtファイルにlibraryDependencyとして追加します。

libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1"

3. 与えられた、いつ、そして

BDDは、ソフトウェアプロジェクトのすべてのメンバー間で共通の言語を提供するために開発されました。 これは、ソフトウェアの動作を説明するプレーンランゲージを使用するための標準を提供します。

ユーザーストーリーの開発がどのように行われるべきかを説明するとき、3つのシナリオを使用します。

  • 与えられた[開始状態]
  • [アクションが実行される]とき
  • 次に[明確な結果が達成されます]

残高を増やすことができる基本的な銀行口座のテストを作成するとします。

  • 銀行口座の残高が30ドルだとすると
  • アカウントの残高に40ドルが追加されたとき
  • 次に、アカウントに70ドルが必要です

4. ScalaTestを使用したBDDテスト

ScalaTestは、Scala、Scala.js、およびJavaプロジェクトで広く使用されているテストライブラリです。 基本的な単体テスト機能と表現力豊かなBDDDSLを提供します。

まず、AnyFunSpecおよびGivenWhenThen特性を拡張して、テストに必要な言語を記述および指定します。

必要な特性をインポートしましょう:

import org.scalatest.GivenWhenThen
import org.scalatest.funspec.AnyFunSpec

次に、銀行口座に何が起こるかを説明し、各説明の後に適切なコードを実行します。

class BBDBankTest extends AnyFunSpec with GivenWhenThen {

  describe("A bank account") {

    it("should have money deposited into it") {

      Given("the bank account has a balance of $30")
      val bankAccount = new BankAccount(30)

      When("$40 is added to the account balance")
      bankAccount.addToBalance(40)

      Then("there should be $70 in the account")
      assert(bankAccount.balance == 70)
    }
  }
}

5. 結論

この短い記事では、ScalaTestライブラリを使用してScalaでBDDテストを開始する方法について説明しました。 いつものように、コードはGitHubオーバーです。