Scala 有多個函式庫和測試方法,但在本教學課程中,我們將示範 ScalaTest 架構中一個熱門選項,稱為 FunSuite。
這假設您知道 如何在 IntelliJ 中建置專案。
設定
- 在 IntelliJ 中建立 sbt 專案。
- 加入 ScalaTest 相依性
- 將 ScalaTest 相依性加入您的
build.sbt
檔案libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.11" % Test
- 如果您收到「build.sbt 已變更」的通知,請選擇自動匯入。
- 這兩個動作會讓
sbt
下載 ScalaTest 函式庫。 - 等待
sbt
同步完成;否則,AnyFunSuite
和test()
將無法辨識。
- 將 ScalaTest 相依性加入您的
- 在左側的專案窗格中,展開
src
=>main
。 - 在
scala
上按一下滑鼠右鍵,然後選擇新增 => Scala 類別。 - 將其命名為
CubeCalculator
,將種類變更為物件
,然後按 Enter 或在物件
上按兩下。 - 將程式碼替換為下列內容
object CubeCalculator: def cube(x: Int) = x * x * x
建立測試
- 在左側的專案窗格中,展開
src
=>test
。 - 在
scala
上按一下滑鼠右鍵,然後選擇新增 => Scala 類別。 - 將類別命名為
CubeCalculatorTest
,然後按 Enter 或在類別
上按兩下。 - 將程式碼替換為下列內容
import org.scalatest.funsuite.AnyFunSuite class CubeCalculatorTest extends AnyFunSuite: test("CubeCalculator.cube") { assert(CubeCalculator.cube(3) === 27) }
- 在原始碼中,在
CubeCalculatorTest
上按一下滑鼠右鍵,然後選擇執行「CubeCalculatorTest」。
了解程式碼
讓我們逐行探討
class CubeCalculatorTest
表示我們正在測試物件CubeCalculator
extends AnyFunSuite
讓我們可以使用 ScalaTest 的 AnyFunSuite 類別的功能,例如test
函式test
是 FunSuite 函式庫中的一個函式,它會收集函式主體中斷言的結果。"CubeCalculator.cube"
是測試的名稱。您可以隨意命名,但其中一個慣例是「類別名稱.方法名稱」。assert
會接收一個布林條件,並判斷測試是否通過或失敗。CubeCalculator.cube(3) === 27
檢查cube
函式的輸出是否確實為 27。===
是 ScalaTest 的一部分,可提供清楚的錯誤訊息。
新增另一個測試案例
- 在第一個
assert
陳述式後面新增另一個assert
陳述式,用來檢查0
的立方。 - 右鍵按一下
CubeCalculatorTest
,並選取「執行 CubeCalculatorTest」,再次重新執行測試。
結論
您已看到一種測試 Scala 程式碼的方法。您可以在 官方網站 上深入了解 ScalaTest 的 FunSuite。