ScalaTest-stilar
FlatSpec och FunSuite.
ScalaTest-stilar är en gratis lektion i Scala för backendutveckling och funktionell programmering på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Scala för backendutveckling och funktionell programmering, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Scala för backendutveckling och funktionell programmering innehåller totalt 4 lektioner.
Vad är ScalaTest?
ScalaTest är det mest använda testramverket för Scala. En utmärkande egenskap är att det erbjuder flera teststilar, så att team kan välja den syntax som passar deras bakgrund.
Lägga till beroendet
Ni lägger till ScalaTest som ett testberoende i build.sbt. Omfånget % Test håller det utanför ert produktionsartefakt.
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % TestVarför flera stilar?
Olika team föredrar olika konventioner: xUnit-veteraner tycker om FunSuite, medan beteendedrivna team föredrar FlatSpec eller WordSpec. ScalaTest stöder alla på samma motor, så ni kan välja en stil per projekt för att få enhetlighet.
AnyFunSuite
AnyFunSuite använder formen test("name") { ... }, som är bekant för JUnit-användare. Varje test-block är ett 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 läses som en specifikation: "A Stack" should "pop values" in { ... }. Subjektet och beteendet bildar en lättläst mening.
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 ni använda should, must eller can som verb. De har samma betydelse, så team väljer ett av dem för att vara konsekventa.
import org.scalatest.flatspec.AnyFlatSpec
class ParserSpec extends AnyFlatSpec {
"A Parser" must "handle empty input" in {
assert("".isEmpty)
}
}it och they
När ni har namngett ett subjekt en gång kan ni följa upp med it (eller they) för att lägga till fler beteenden för samma subjekt utan att upprepa namnet.
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 grupperar tester med nästlade describe-block och it-satser, vilket ger hierarkiska och lättlästa resultat.
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)
}
}
}
}Väntande och ignorerade tester
Markera ofärdiga tester med pending, eller hoppa över ett test genom att använda ignore i stället för test/in. Båda håller testsviten grön och signalerar samtidigt att arbete återstår.
import org.scalatest.funsuite.AnyFunSuite
class WipSuite extends AnyFunSuite {
test("feature not done") {
pending
}
ignore("flaky test") {
assert(false)
}
}Välja en stil
Vägledning:
FunSuite— minimal och xUnit-lik, utmärkt för enhetstester.FlatSpec— lättlästa meningar som beskriver beteenden.FunSpec/WordSpec— nästlad gruppering i specifikationsstil.
Välj en stil per kodbas och var konsekventa.
Köra testerna
Kör alla tester med sbt test, eller en enskild svit med sbt "testOnly *CalculatorSpec". ScalaTest rapporterar namnet på varje test och dess resultat.
sbt test
sbt "testOnly *CalculatorSpec"Snabb kontroll
Testa era kunskaper om ScalaTest-stilar.
Sammanfattning
Ni har lärt er ScalaTest-stilar:
- Lägg till ScalaTest med omfånget
% Test. AnyFunSuite:test("...") { }-block.AnyFlatSpec: subjektshouldbeteendein { }.AnyFunSpec: nästladedescribe/it.- Välj en stil per projekt och kör med
sbt test.
Lär dig Scala med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 39
- Lektioner
- 143
Vanliga frågor
Är lektionen ”ScalaTest-stilar” gratis?
Ja – hela texten till ”ScalaTest-stilar” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Scala för backendutveckling och funktionell programmering, kan Ni uppgradera till CoddyKit PRO. Kursen i Scala för backendutveckling och funktionell programmering innehåller totalt 4 lektioner.
Vad lär jag mig i ”ScalaTest-stilar”?
FlatSpec och FunSuite. Ni övar på Scala för backendutveckling och funktionell programmering med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Scala för backendutveckling och funktionell programmering?
Du behöver inga förkunskaper. Utbildningen i Scala för backendutveckling och funktionell programmering på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”ScalaTest-stilar”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Scala för backendutveckling och funktionell programmering-lektionen?
Ja. Varje Scala för backendutveckling och funktionell programmering-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- ScalaTest-stilar
- Matchers
- Egenskapsbaserad testning
- Mockning och fixtures