Estilos de ScalaTest
FlatSpec y FunSuite
Estilos de ScalaTest es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
¿Qué es ScalaTest?
ScalaTest es el framework de pruebas más utilizado para Scala. Una característica distintiva es que ofrece varios estilos de prueba, lo que permite a los equipos elegir la sintaxis que mejor se adapte a su experiencia.
Añadir la dependencia
Añada ScalaTest como dependencia de pruebas en build.sbt. El ámbito % Test evita que se incluya en el artefacto de producción.
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % Test¿Por qué varios estilos?
Los distintos equipos prefieren convenciones diferentes: a quienes tienen experiencia con xUnit les gusta FunSuite; los equipos orientados al desarrollo guiado por comportamiento prefieren FlatSpec o WordSpec. ScalaTest admite todos estos estilos en un único motor, por lo que puede elegir un estilo por proyecto para mantener la coherencia.
AnyFunSuite
AnyFunSuite utiliza la forma test("name") { ... }, familiar para quienes utilizan JUnit. Cada bloque test constituye un caso de prueba.
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 se lee como una especificación: "A Stack" should "pop values" in { ... }. El sujeto y el comportamiento forman una frase fácil de leer.
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 frente a must
En FlatSpec puede utilizar should, must o can como verbo. Su significado es intercambiable; los equipos eligen uno para mantener la coherencia.
import org.scalatest.flatspec.AnyFlatSpec
class ParserSpec extends AnyFlatSpec {
"A Parser" must "handle empty input" in {
assert("".isEmpty)
}
}it y they
Después de nombrar un sujeto una vez, utilice it (o they) para añadir más comportamientos para el mismo sujeto sin repetir su nombre.
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 agrupa las pruebas mediante bloques describe anidados y cláusulas it, lo que proporciona una salida jerárquica y fácil de leer.
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)
}
}
}
}Pruebas pendientes e ignoradas
Marque las pruebas sin terminar como pending o salte una utilizando ignore en lugar de test/in. Ambas opciones mantienen la suite en verde y señalan que queda trabajo por hacer.
import org.scalatest.funsuite.AnyFunSuite
class WipSuite extends AnyFunSuite {
test("feature not done") {
pending
}
ignore("flaky test") {
assert(false)
}
}Elegir un estilo
Orientación:
FunSuite— minimalista, similar a xUnit y excelente para pruebas unitarias.FlatSpec— frases de comportamiento fáciles de leer.FunSpec/WordSpec— agrupación anidada al estilo de las especificaciones.
Elija uno por base de código y mantenga la coherencia.
Ejecutar las pruebas
Ejecute todas las pruebas con sbt test o una única suite con sbt "testOnly *CalculatorSpec". ScalaTest informa del nombre y el resultado de cada prueba.
sbt test
sbt "testOnly *CalculatorSpec"Comprobación rápida
Compruebe sus conocimientos sobre los estilos de ScalaTest.
Resumen
Ha aprendido los estilos de ScalaTest:
- Añada ScalaTest con el ámbito
% Test. AnyFunSuite: bloquestest("...") { }.AnyFlatSpec: sujetoshouldcomportamientoin { }.AnyFunSpec:describe/itanidados.- Elija un estilo por proyecto; ejecute las pruebas con
sbt test.
Aprende Scala con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 39
- Lecciones
- 143
Preguntas frecuentes
¿La lección «Estilos de ScalaTest» es gratis?
Sí — el texto completo de «Estilos de ScalaTest» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 4 lecciones en total.
¿Qué aprenderé en «Estilos de ScalaTest»?
FlatSpec y FunSuite Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?
No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Estilos de ScalaTest»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?
Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estilos de ScalaTest
- Matchers
- Pruebas basadas en propiedades
- Mocking y fixtures