Стили ScalaTest
FlatSpec и FunSuite
«Стили ScalaTest» — бесплатный урок Scala for Backend Engineering & Functional Programming на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Scala for Backend Engineering & Functional Programming, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Scala for Backend Engineering & Functional Programming содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What is ScalaTest?
ScalaTest is the most widely used testing framework for Scala. A distinctive feature is that it offers multiple testing styles, letting teams choose the syntax that fits their background.
Adding the Dependency
You add ScalaTest as a test dependency in build.sbt. The % Test scope keeps it out of your production artifact.
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % TestWhy Multiple Styles?
Different teams prefer different conventions: xUnit veterans like FunSuite; behavior-driven teams like FlatSpec or WordSpec. ScalaTest supports them all on one engine, so you pick a style per project for consistency.
AnyFunSuite
AnyFunSuite uses a test("name") { ... } form, familiar to JUnit users. Each test block is one test case.
import org.scalatest.funsuite.AnyFunSuite
class MathSuite extends AnyFunSuite {
test("addition works") {
assert(1 + 1 == 2)
}
test("multiplication works") {
assert(2 * 3 == 6)
}
}AnyFlatSpec
AnyFlatSpec reads like a specification: "A Stack" should "pop values" in { ... }. The subject and behavior form a readable sentence.
import org.scalatest.flatspec.AnyFlatSpec
class CalculatorSpec extends AnyFlatSpec {
"A Calculator" should "add two numbers" in {
assert(2 + 3 == 5)
}
it should "subtract two numbers" in {
assert(5 - 2 == 3)
}
}should vs must
In FlatSpec you can use should, must, or can as the verb. They are interchangeable in meaning; teams pick one for consistency.
import org.scalatest.flatspec.AnyFlatSpec
class ParserSpec extends AnyFlatSpec {
"A Parser" must "handle empty input" in {
assert("".isEmpty)
}
}it and they
After naming a subject once, follow up with it (or they) to add more behaviors for the same subject without repeating its name.
import org.scalatest.flatspec.AnyFlatSpec
class ListSpec extends AnyFlatSpec {
"A List" should "report its size" in {
assert(List(1, 2, 3).size == 3)
}
it should "reverse correctly" in {
assert(List(1, 2).reverse == List(2, 1))
}
}AnyFunSpec
AnyFunSpec groups tests with nested describe blocks and it clauses, giving hierarchical, readable output.
import org.scalatest.funspec.AnyFunSpec
class SetSpec extends AnyFunSpec {
describe("A Set") {
describe("when empty") {
it("has size 0") {
assert(Set.empty[Int].size == 0)
}
}
}
}Pending and Ignored Tests
Mark unfinished tests as pending, or skip one by using ignore instead of test/in. Both keep the suite green while signaling work to do.
import org.scalatest.funsuite.AnyFunSuite
class WipSuite extends AnyFunSuite {
test("feature not done") {
pending
}
ignore("flaky test") {
assert(false)
}
}Choosing a Style
Guidance:
FunSuite— minimal, xUnit-like, great for unit tests.FlatSpec— readable behavior sentences.FunSpec/WordSpec— nested, spec-style grouping.
Pick one per codebase and stay consistent.
Running the Tests
Run all tests with sbt test, or a single suite with sbt "testOnly *CalculatorSpec". ScalaTest reports each test name and outcome.
sbt test
sbt "testOnly *CalculatorSpec"Quick Check
Test your knowledge of ScalaTest styles.
Recap
You learned ScalaTest styles:
- Add ScalaTest with
% Testscope. AnyFunSuite:test("...") { }blocks.AnyFlatSpec: subjectshouldbehaviorin { }.AnyFunSpec: nesteddescribe/it.- Pick one style per project; run with
sbt test.
Часто задаваемые вопросы
Урок «Стили ScalaTest» бесплатный?
Да — полный текст урока «Стили ScalaTest» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Scala for Backend Engineering & Functional Programming, подпишись на CoddyKit PRO. Курс Scala for Backend Engineering & Functional Programming содержит 4 уроков всего.
Чему я научусь в уроке «Стили ScalaTest»?
FlatSpec и FunSuite Ты практикуешь Scala for Backend Engineering & Functional Programming с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Scala for Backend Engineering & Functional Programming?
Предыдущий опыт не требуется. Scala for Backend Engineering & Functional Programming на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Стили ScalaTest»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Scala for Backend Engineering & Functional Programming?
Да. Каждый урок Scala for Backend Engineering & Functional Programming включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Стили ScalaTest
- Сопоставители
- Тестирование на основе свойств
- Моки и фикстуры