Існує кілька бібліотек і методологій тестування для Scala, але в цьому посібнику ми продемонструємо один популярний варіант для фреймворку ScalaTest, що називається FunSuite.
Ми припускаємо, що ви знаєте як створити проєкт з IntelliJ.
Налаштування
- Створіть sbt проєкт в IntelliJ.
- Додайте залежність ScalaTest:
- Додайте залежність ScalaTest у файл
build.sbt
вашого проєкту:libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.11" % Test
- Ви побачите сповіщення “build.sbt was changed”, оберіть auto-import.
- Ці дві дії призведуть до того, що
sbt
завантажить бібліотеку ScalaTest. - Зачекайте завершення синхронізації
sbt
; інакшеAnyFunSuite
таtest()
не розпізнаються.
- Додайте залежність ScalaTest у файл
- На панелі проєкту розкрийте
src
=>main
. - Клацніть правою кнопкою миші на
scala
та оберіть New => Scala class. - Назвіть його
CubeCalculator
та змініть Kind наobject
та натисніть Enter або двічі клацніть наobject
. - Замініть код на наступний:
object CubeCalculator: def cube(x: Int) = x * x * x
Створення тесту
- Зліва на панелі проєкту розкрийте
src
=>test
. - Клацніть правою кнопкою миші на
scala
та оберіть New => Scala class. - Назвіть клас
CubeCalculatorTest
та натисніть Enter або двічі клацніть наclass
. - Замініть код на наступний:
import org.scalatest.funsuite.AnyFunSuite class CubeCalculatorTest extends AnyFunSuite: test("CubeCalculator.cube") { assert(CubeCalculator.cube(3) === 27) }
- У початковому коді клацніть правою кнопкою миші на
CubeCalculatorTest
та оберіть Run ‘CubeCalculatorTest’.
Розуміння коду
Переглянемо кожний рядок окремо.
class CubeCalculatorTest
означає, що ми тестуємо об’єктCubeCalculator
extends AnyFunSuite
використовуємо функціональність класу AnyFunSuite з ScalaTest, насамперед функціюtest
test
функція з AnyFunSuite, що збирає результати тверджень (assertions) у тілі функції."CubeCalculator.cube"
назва тесту. Ви можете обрати будь-яку назву, але існує домовленість називати “ClassName.methodName”.assert
приймає булеву умову і визначає, пройшов тест чи не пройшов.CubeCalculator.cube(3) === 27
перевіряє чи дорівнює результат функціїcube
значенню 27. Оператор===
є частиною ScalaTest та надає чисті повідомлення про помилки.
Додати інший тест-кейс
- Додайте інший тестовий блок з власним
assert
, що перевіряє значення куба0
. - Виконайте
sbt test
знову, двічі клацнувши правою кнопкою миші наCubeCalculatorTest
та обравши ‘Run CubeCalculatorTest’.
Висновок
Ви побачили один шлях тестування вашого Scala коду. Більше про FunSuite ScalaTest на офіційному вебсайті. Ви можете проглянути інші фреймворки для тестування такі як ScalaCheck та Specs2.