Існує кілька бібліотек і методологій тестування для Scala, але в цьому посібнику ми продемонструємо один популярний варіант для фреймворку ScalaTest, що називається FunSuite.
Ми припускаємо, що ви знаєте як створити проєкт з IntelliJ.
Налаштування
- Створіть sbt проєкт в IntelliJ.
- Додайте залежність ScalaTest:
    - Додайте залежність ScalaTest у файл build.sbtвашого проєкту:libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.19" % 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.