Style ScalaTest
FlatSpec i FunSuite
Style ScalaTest to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.
Czym jest ScalaTest?
ScalaTest to najczęściej używany framework testowy dla Scali. Jego wyróżniającą cechą jest obsługa wielu stylów testowania, dzięki czemu zespoły mogą wybrać składnię pasującą do ich doświadczenia.
Dodawanie zależności
Dodajesz ScalaTest jako zależność testową w pliku build.sbt. Zakres % Test sprawia, że biblioteka nie trafia do artefaktu produkcyjnego.
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % TestDlaczego wiele stylów?
Różne zespoły preferują różne konwencje: weterani xUnit lubią FunSuite, a zespoły stosujące podejście behavior-driven — FlatSpec lub WordSpec. ScalaTest obsługuje je wszystkie w jednym silniku, więc dla zachowania spójności wybierasz styl dla każdego projektu.
AnyFunSuite
AnyFunSuite używa formy test("name") { ... }, znanej użytkownikom JUnit. Każdy blok test jest jednym przypadkiem testowym.
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 przypomina specyfikację: "A Stack" should "pop values" in { ... }. Obiekt i jego zachowanie tworzą czytelne zdanie.
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 a must
W FlatSpec jako czasownika możesz użyć should, must lub can. Ich znaczenie jest wymienne, więc zespoły wybierają jeden wariant dla zachowania spójności.
import org.scalatest.flatspec.AnyFlatSpec
class ParserSpec extends AnyFlatSpec {
"A Parser" must "handle empty input" in {
assert("".isEmpty)
}
}it i they
Po jednokrotnym nazwaniu obiektu użyj it (lub they), aby dodać kolejne zachowania tego samego obiektu bez powtarzania jego nazwy.
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 grupuje testy za pomocą zagnieżdżonych bloków describe i klauzul it, zapewniając hierarchiczny i czytelny wynik.
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)
}
}
}
}Oczekujące i pomijane testy
Oznaczaj niedokończone testy jako pending albo pomijaj pojedynczy test, używając ignore zamiast test/in. Oba rozwiązania utrzymują zielony wynik zestawu testów, sygnalizując jednocześnie pozostałą pracę.
import org.scalatest.funsuite.AnyFunSuite
class WipSuite extends AnyFunSuite {
test("feature not done") {
pending
}
ignore("flaky test") {
assert(false)
}
}Wybór stylu
Wskazówki:
FunSuite— minimalny, podobny do xUnit, świetny do testów jednostkowych.FlatSpec— czytelne zdania opisujące zachowanie.FunSpec/WordSpec— zagnieżdżone grupowanie w stylu specyfikacji.
Wybierz jeden styl dla całej bazy kodu i zachowaj spójność.
Uruchamianie testów
Uruchom wszystkie testy za pomocą sbt test albo pojedynczy zestaw za pomocą sbt "testOnly *CalculatorSpec". ScalaTest raportuje nazwę i wynik każdego testu.
sbt test
sbt "testOnly *CalculatorSpec"Szybki sprawdzian
Sprawdź swoją wiedzę o stylach ScalaTest.
Podsumowanie
Nauczyłeś się stylów ScalaTest:
- Dodawaj ScalaTest z zakresem
% Test. AnyFunSuite: blokitest("...") { }.AnyFlatSpec: obiektshouldzachowaniein { }.AnyFunSpec: zagnieżdżonedescribe/it.- Wybierz jeden styl dla projektu; uruchamiaj testy za pomocą
sbt test.
Często zadawane pytania
Czy lekcja „Style ScalaTest” jest bezpłatna?
Tak — pełny tekst „Style ScalaTest” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.
Co nauczysz się w „Style ScalaTest”?
FlatSpec i FunSuite Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?
Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Style ScalaTest”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?
Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.