Stili di ScalaTest
FlatSpec e FunSuite
Stili di ScalaTest è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Scala for Backend Engineering & Functional Programming, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Che cos'è ScalaTest?
ScalaTest è il framework di testing più usato per Scala. Una caratteristica distintiva è il supporto a diversi stili di testing, che consente ai team di scegliere la sintassi più adatta alla propria esperienza.
Aggiungere la dipendenza
Aggiungi ScalaTest come dipendenza di test in build.sbt. Lo scope % Test impedisce che venga incluso nel tuo artifact di produzione.
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % TestPerché più stili?
Team diversi preferiscono convenzioni diverse: chi ha esperienza con xUnit apprezza FunSuite; i team orientati al behavior-driven development preferiscono FlatSpec o WordSpec. ScalaTest li supporta tutti con un unico motore, quindi puoi scegliere uno stile per progetto e mantenere la coerenza.
AnyFunSuite
AnyFunSuite usa la forma test("name") { ... }, familiare a chi usa JUnit. Ogni blocco test è un singolo caso di test.
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 si legge come una specifica: "A Stack" should "pop values" in { ... }. Il soggetto e il comportamento formano una frase leggibile.
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 puoi usare should, must o can come verbo. Il significato è intercambiabile; i team ne scelgono uno per mantenere la coerenza.
import org.scalatest.flatspec.AnyFlatSpec
class ParserSpec extends AnyFlatSpec {
"A Parser" must "handle empty input" in {
assert("".isEmpty)
}
}it e they
Dopo aver nominato un soggetto, usa it (o they) per aggiungere altri comportamenti allo stesso soggetto senza ripeterne il nome.
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 raggruppa i test con blocchi describe annidati e clausole it, producendo un output gerarchico e leggibile.
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)
}
}
}
}Test in sospeso e ignorati
Contrassegna i test non terminati come pending, oppure salta un test usando ignore al posto di test/in. Entrambe le opzioni mantengono la suite verde e segnalano il lavoro ancora da svolgere.
import org.scalatest.funsuite.AnyFunSuite
class WipSuite extends AnyFunSuite {
test("feature not done") {
pending
}
ignore("flaky test") {
assert(false)
}
}Scegliere uno stile
Indicazioni:
FunSuite— minimale, simile a xUnit, ottimo per gli unit test;FlatSpec— frasi leggibili che descrivono i comportamenti;FunSpec/WordSpec— raggruppamento annidato in stile specifica.
Scegline uno per il codebase e usalo in modo coerente.
Eseguire i test
Esegui tutti i test con sbt test, oppure una singola suite con sbt "testOnly *CalculatorSpec". ScalaTest riporta il nome e l'esito di ogni test.
sbt test
sbt "testOnly *CalculatorSpec"Controllo rapido
Verifica la tua conoscenza degli stili di ScalaTest.
Riepilogo
Hai imparato gli stili di ScalaTest:
- aggiungi ScalaTest con lo scope
% Test; AnyFunSuite: blocchitest("...") { };AnyFlatSpec: soggettoshouldcomportamentoin { };AnyFunSpec:describe/itannidati;- scegli uno stile per progetto ed esegui i test con
sbt test.
Impara Scala con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 39
- Lezioni
- 143
Domande Frequenti
La lezione «Stili di ScalaTest» è gratuita?
Sì — il testo completo di «Stili di ScalaTest» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Scala for Backend Engineering & Functional Programming, passa a CoddyKit PRO. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Cosa imparerò in «Stili di ScalaTest»?
FlatSpec e FunSuite Eserciti Scala for Backend Engineering & Functional Programming con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Scala for Backend Engineering & Functional Programming?
Non è richiesta alcuna esperienza precedente. Scala for Backend Engineering & Functional Programming su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Stili di ScalaTest»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Scala for Backend Engineering & Functional Programming?
Sì. Ogni lezione Scala for Backend Engineering & Functional Programming include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Stili di ScalaTest
- Matcher
- Test basati sulle proprietà
- Mock e fixture