【Scala】Scala ~ テスティングフレームワーク ~

■ はじめに

Scala の 単体試験をする可能性が出てきたので
テスティングフレームワーク について、
徐々に書き溜めていく

目次

【1】Scala の テスティングフレームワーク
 1)ScalaTest
 2)specs2
 3)ScalaCheck
 4)TestNG
 5)Setak / Setac
【2】Scala の モックツール
 1)ScalaMock
 2)EasyMock
 3)JMock
 4)Mockito
【3】Scala の カバレッジツール

【1】Scala の テストフレームワーク

1)ScalaTest
2)specs2
3)ScalaCheck
4)TestNG
5)Setak / Setac
など

1)ScalaTest

* トレイトを使い分けることで、様々なスタイル(xUnit/BDDなど)で
 テストケースを記述できるフレームワーク
* specs2と比較すると、シンプルで扱いやすい

 => 詳細は、以下の関連記事を参照のこと

ScalaTest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/27/001306

2)specs2

* BDD(Behavior-Driven Development; 振舞駆動開発)スタイル
 のテスティングフレームワーク
* ScalaTest より高機能(例えば、HTMLリポートなど)
 => 詳細は、以下の関連記事を参照のこと

specs2 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/06/08/122708
specs2 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2024/06/09/221005

3)ScalaCheck

* テストデータのパターンを自動生成してくれるテスティングフレームワーク
* 単体でも使用可能だが、ScalaTest や specs2 と組み合わせて使える

ScalaTest ~ with ScalaCheck ~
https://dk521123.hatenablog.com/entry/2023/03/29/000014

4)TestNG

* TestNG = Testing, the Next Generation
* Scala ってより、Javaのテスティングフレームワーク
* 以下のような5つの特徴がある
 [1] テストにおける各種設定をXMLに記述できる
 [2] アノテーションベースである
 [3] 前後処理のタイミングを細かく設定できる
 [4] テストをグループ化することができる
 [5] テスト間に依存関係を作れる

https://atmarkit.itmedia.co.jp/ait/articles/0809/11/news151.html

5)Setak / Setac

Setak

* Akka の アクターを使ったプログラムのためのテスティングフレームワーク

Setac

* Scala 標準のアクター向けのテスティングフレームワーク

【2】Scala の モックツール

はじめ、ScalaTestでのMockは、Mockito の1択だろって
思っていたのだが、デフォルトで「import org.scalatest.mock.MockitoSugar」
がなくなっていたしで、改めてちゃんと調べてみたら、
公式ドキュメントに以下の記述あり。

https://www.scalatest.org/user_guide/testing_with_mock_objects

より抜粋
~~~~~~~~~~~~
ScalaMock
EasyMock
JMock
Mockito
~~~~~~~~~~~~

1)ScalaMock

* PureのScala製のMock
 => 詳細は、以下の関連記事を参照のこと

ScalaTest ~ ScalaMock ~
https://dk521123.hatenablog.com/entry/2024/06/12/215306

2)EasyMock

* Java製のMock
 => 以下の関連記事を参照のこと

EasyMock ~入門編~
https://dk521123.hatenablog.com/entry/2010/01/28/234207

* 導入したい場合は、以下の公式ドキュメント参照

https://www.scalatest.org/plus/easymock

3)JMock

* こちらもJava製のMock

http://jmock.org/

* 導入したい場合は、以下の公式ドキュメント参照

https://www.scalatest.org/plus/jmock

4)Mockito

* Scala ってより、Javaのモックツール
 => 詳細は、以下の関連記事を参照のこと

ScalaTest ~ with Mockito ~
https://dk521123.hatenablog.com/entry/2023/03/31/002830
Mockito ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/07/18/233904
Mockito ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2014/07/19/121409

【3】Scalaカバレッジツール

* 以下の関連記事を参照のこと

ScalaTest ~ with Coverage ~
https://dk521123.hatenablog.com/entry/2023/08/07/222945

関連記事

ScalaTest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/27/001306
ScalaTest ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/03/28/003906
ScalaTest ~ with ScalaCheck ~
https://dk521123.hatenablog.com/entry/2023/03/29/000014
ScalaTest ~ with Mockito ~
https://dk521123.hatenablog.com/entry/2023/03/31/002830
ScalaTest ~ with Coverage ~
https://dk521123.hatenablog.com/entry/2023/08/07/222945
specs2 ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/06/08/122708
specs2 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2024/06/09/221005
ScalaTest ~ ScalaMock ~
https://dk521123.hatenablog.com/entry/2024/06/12/215306
Mockito ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/07/18/233904
Mockito ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2014/07/19/121409
EasyMock ~入門編~
https://dk521123.hatenablog.com/entry/2010/01/28/234207
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331