0Pricing
Scala for Backend Engineering & Functional Programming · Lektion

ScalaTest-Stile

FlatSpec und FunSuite

ScalaTest-Stile ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Scala for Backend Engineering & Functional Programming-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Was ist ScalaTest?

ScalaTest ist das am weitesten verbreitete Testframework für Scala. Ein besonderes Merkmal ist das Angebot mehrerer Teststile, sodass Teams die Syntax wählen können, die zu ihrem Hintergrund passt.

Die Abhängigkeit hinzufügen

Sie fügen ScalaTest in build.sbt als Testabhängigkeit hinzu. Der Gültigkeitsbereich % Test hält ScalaTest aus Ihrem Produktionsartefakt heraus.

libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % Test

Warum mehrere Stile?

Verschiedene Teams bevorzugen unterschiedliche Konventionen: xUnit-Veteranen mögen FunSuite; verhaltensgetriebene Teams bevorzugen FlatSpec oder WordSpec. ScalaTest unterstützt alle diese Stile mit einer gemeinsamen Engine. Wählen Sie daher pro Projekt einen Stil und bleiben Sie konsistent.

AnyFunSuite

AnyFunSuite verwendet die Form test("name") { ... }, die JUnit-Nutzern vertraut ist. Jeder test-Block ist ein Testfall.

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 liest sich wie eine Spezifikation: "A Stack" should "pop values" in { ... }. Subjekt und Verhalten bilden einen verständlichen Satz.

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 können Sie should, must oder can als Verb verwenden. Ihre Bedeutung ist austauschbar; Teams wählen für die Konsistenz eines davon.

import org.scalatest.flatspec.AnyFlatSpec

class ParserSpec extends AnyFlatSpec {
  "A Parser" must "handle empty input" in {
    assert("".isEmpty)
  }
}

it und they

Nachdem Sie ein Subjekt einmal benannt haben, können Sie mit it (oder they) weitere Verhaltensweisen für dasselbe Subjekt hinzufügen, ohne seinen Namen zu wiederholen.

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 gruppiert Tests mit verschachtelten describe-Blöcken und it-Klauseln und erzeugt dadurch eine hierarchische, gut lesbare Ausgabe.

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)
      }
    }
  }
}

Ausstehende und ignorierte Tests

Markieren Sie noch nicht fertige Tests als pending oder überspringen Sie einen Test, indem Sie anstelle von test/in ignore verwenden. Beides hält die Testsuite grün und weist zugleich auf noch ausstehende Arbeit hin.

import org.scalatest.funsuite.AnyFunSuite

class WipSuite extends AnyFunSuite {
  test("feature not done") {
    pending
  }
  ignore("flaky test") {
    assert(false)
  }
}

Einen Stil auswählen

Orientierungshilfe:

  • FunSuite — minimalistisch, xUnit-ähnlich und hervorragend für Unit-Tests geeignet.
  • FlatSpec — gut lesbare Verhaltenssätze.
  • FunSpec/WordSpec — verschachtelte Gruppierung im Spezifikationsstil.

Wählen Sie pro Codebasis einen Stil und bleiben Sie konsistent.

Die Tests ausführen

Führen Sie alle Tests mit sbt test aus oder eine einzelne Suite mit sbt "testOnly *CalculatorSpec". ScalaTest meldet den Namen und das Ergebnis jedes Tests.

sbt test
sbt "testOnly *CalculatorSpec"

Kurzer Test

Testen Sie Ihr Wissen über ScalaTest-Stile.

Zusammenfassung

Sie haben ScalaTest-Stile gelernt:

  • Fügen Sie ScalaTest mit dem Gültigkeitsbereich % Test hinzu.
  • AnyFunSuite: test("...") { }-Blöcke.
  • AnyFlatSpec: Subjekt should Verhalten in { }.
  • AnyFunSpec: verschachtelte describe/it-Blöcke.
  • Wählen Sie pro Projekt einen Stil und führen Sie die Tests mit sbt test aus.

Häufig gestellte Fragen

Ist die Lektion „ScalaTest-Stile“ kostenlos?

Ja — der vollständige Text von „ScalaTest-Stile“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Scala for Backend Engineering & Functional Programming-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „ScalaTest-Stile“?

FlatSpec und FunSuite Du übst Scala for Backend Engineering & Functional Programming mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Scala for Backend Engineering & Functional Programming zu starten?

Keine Vorkenntnisse erforderlich. Scala for Backend Engineering & Functional Programming auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „ScalaTest-Stile“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Scala for Backend Engineering & Functional Programming-Lektion Code schreiben und ausführen?

Ja. Jede Scala for Backend Engineering & Functional Programming-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. ScalaTest-Stile
  2. Matcher
  3. Property-Based Testing
  4. Mocking und Fixtures
← Zurück zu Scala for Backend Engineering & Functional Programming