Scala for Backend Engineering & Functional Programming · Lección

Estilos de ScalaTest

FlatSpec y FunSuite

Lección 1 de 413 pasos

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: bloques test("...") { }.
  • AnyFlatSpec: sujeto should comportamiento in { }.
  • AnyFunSpec: describe/it anidados.
  • Elija un estilo por proyecto; ejecute las pruebas con sbt test.
Gratis para empezar

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

  1. Estilos de ScalaTest
  2. Matchers
  3. Pruebas basadas en propiedades
  4. Mocking y fixtures
← Volver a Scala for Backend Engineering & Functional Programming