Scala for backendutvikling og funksjonell programmering · leksjon

ScalaTest-stiler

FlatSpec og FunSuite

Leksjon 1 av 413 trinn

ScalaTest-stiler er en gratis leksjon i Scala for backendutvikling og funksjonell programmering på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Scala for backendutvikling og funksjonell programmering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Scala for backendutvikling og funksjonell programmering inneholder totalt 4 leksjoner.

Hva er ScalaTest?

ScalaTest er det mest brukte testrammeverket for Scala. Et særtrekk er at det tilbyr flere teststiler, slik at team kan velge syntaksen som passer bakgrunnen deres.

Legge til avhengigheten

De legger til ScalaTest som en testavhengighet i build.sbt. Omfanget % Test sørger for at den ikke tas med i produksjonsartefakten Deres.

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

Hvorfor flere stiler?

Ulike team foretrekker ulike konvensjoner: xUnit-veteraner liker FunSuite, mens atferdsdrevne team liker FlatSpec eller WordSpec. ScalaTest støtter alle på samme motor, så De kan velge én stil per prosjekt for å sikre konsistens.

AnyFunSuite

AnyFunSuite bruker formen test("name") { ... }, som er kjent for JUnit-brukere. Hver test-blokk er ett testtilfelle.

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 leses som en spesifikasjon: "A Stack" should "pop values" in { ... }. Emnet og atferden danner en lettlest setning.

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 kontra must

I FlatSpec kan De bruke should, must eller can som verb. De har samme betydning; team velger én for å sikre konsistens.

import org.scalatest.flatspec.AnyFlatSpec

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

it og they

Etter at De har navngitt et emne én gang, kan De bruke it (eller they) til å legge til flere egenskaper for det samme emnet uten å gjenta navnet.

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 grupperer tester med nestede describe-blokker og it-setninger, noe som gir hierarkiske og lettleste resultater.

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

Ventende og ignorerte tester

Marker uferdige tester som pending, eller hopp over en test ved å bruke ignore i stedet for test/in. Begge deler holder testpakken grønn, samtidig som det vises at det gjenstår arbeid.

import org.scalatest.funsuite.AnyFunSuite

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

Velge en stil

Retningslinjer:

  • FunSuite — minimal og xUnit-lignende, godt egnet for enhetstester.
  • FlatSpec — lettleste setninger om atferd.
  • FunSpec/WordSpec — nestet gruppering i spesifikasjonsstil.

Velg én stil per kodebase, og vær konsekvent.

Kjøre testene

Kjør alle tester med sbt test, eller én enkelt testpakke med sbt "testOnly *CalculatorSpec". ScalaTest rapporterer navnet og resultatet for hver test.

sbt test
sbt "testOnly *CalculatorSpec"

Hurtigsjekk

Test kunnskapene Deres om ScalaTest-stiler.

Oppsummering

De har lært om ScalaTest-stiler:

  • Legg til ScalaTest med omfanget % Test.
  • AnyFunSuite: test("...") { }-blokker.
  • AnyFlatSpec: emne should atferd in { }.
  • AnyFunSpec: nestede describe/it.
  • Velg én stil per prosjekt, og kjør med sbt test.
Gratis å komme i gang

Lær deg Scala med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
39
Leksjoner
143

Ofte stilte spørsmål

Er leksjonen «ScalaTest-stiler» gratis?

Ja – hele teksten i «ScalaTest-stiler» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Scala for backendutvikling og funksjonell programmering-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Scala for backendutvikling og funksjonell programmering inneholder totalt 4 leksjoner.

Hva lærer jeg i «ScalaTest-stiler»?

FlatSpec og FunSuite Du øver på Scala for backendutvikling og funksjonell programmering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Scala for backendutvikling og funksjonell programmering?

Ingen tidligere erfaring er nødvendig. Scala for backendutvikling og funksjonell programmering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «ScalaTest-stiler»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Scala for backendutvikling og funksjonell programmering-leksjonen?

Ja. Alle Scala for backendutvikling og funksjonell programmering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. ScalaTest-stiler
  2. Matchere
  3. Egenskapsbasert testing
  4. Mocking og testdata
← Tilbake til Scala for backendutvikling og funksjonell programmering