#19 Scalaで学ぶテスト(単体テスト)の基本
Scalaで関数を書いた後、それが正しく動くかをprintlnで確認するだけで済ませていませんか?この記事では、Scalaで書いたコードを自動でチェックする「テスト」の基本を解説します。
なぜテストを書くのか
コードを修正するたびに、関連する処理が壊れていないかを手作業で確認するのは大変です。テストを用意しておけば、コマンド一つで動作確認ができ、安心してコードを直せるようになります。
ScalaTestを使ったテストの書き方
ScalaではScalaTestというテスト用ライブラリがよく使われます。build.sbtに依存関係を追加して導入します。
object Calculator {
def add(a: Int, b: Int): Int = a + b
}
import org.scalatest.funsuite.AnyFunSuite
class CalculatorTest extends AnyFunSuite {
test("2と3を足すと5になる") {
assert(Calculator.add(2, 3) == 5)
}
}
AnyFunSuiteを継承したクラスを作り、test("名前") { ... }という形でテストケースを書きます。assert(条件)で「この条件が真であるはず」を宣言します。sbt testを実行すると結果が一覧表示されます。
異常系もテストしておく
正しい入力だけでなく、境界値(0やマイナスの値など)を渡した時の挙動もテストしておくと安心です。
test("0同士を足すと0になる") {
assert(Calculator.add(0, 0) == 0)
}
Scalaならではの注意点
Scalaは関数型プログラミングの考え方を取り入れており、Optionという「値があるかもしれないし、無いかもしれない」ことを表す型がよく使われます。Optionを返す関数では、値がある場合(Some)と無い場合(None)の両方をテストしておくと、想定漏れを防げます。
まとめ
テストは「正しく動くことを保証する仕組み」であり、安心してコードを修正するための土台になります。testとassertから始めて、Option型を使った関数のテストにも意識を向けてみてください。
関連記事
本ページはプロモーションを含みます。
参考書籍(PR)
Scalaをもっと学びたい方には「実践Scala入門」がおすすめです。
コメント
コメントを投稿