Scala for Backend Engineering & Functional Programming · Aula

Estilos do ScalaTest

FlatSpec e FunSuite.

Aula 1 de 413 etapas

Estilos do ScalaTest é uma aula grátis de Scala for Backend Engineering & Functional Programming no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Scala for Backend Engineering & Functional Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.

O que é ScalaTest?

ScalaTest é a estrutura de testes mais usada para Scala. Uma característica marcante é oferecer vários estilos de teste, permitindo que as equipes escolham a sintaxe mais adequada à sua experiência.

Adicionando a Dependência

Você adiciona ScalaTest como uma dependência de teste em build.sbt. O escopo % Test mantém essa dependência fora do artefato de produção.

libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.18" % Test

Por que Vários Estilos?

Equipes diferentes preferem convenções diferentes: veteranos de xUnit gostam de FunSuite; equipes orientadas por comportamento gostam de FlatSpec ou WordSpec. ScalaTest oferece suporte a todos eles em um único mecanismo, então você escolhe um estilo por projeto para manter a consistência.

AnyFunSuite

AnyFunSuite usa o formato test("name") { ... }, familiar para usuários de JUnit. Cada bloco test é um caso de teste.

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 é lido como uma especificação: "A Stack" should "pop values" in { ... }. O assunto e o comportamento formam uma frase legível.

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 versus must

Em FlatSpec, você pode usar should, must ou can como verbo. O significado é intercambiável; as equipes escolhem uma opção para manter a consistência.

import org.scalatest.flatspec.AnyFlatSpec

class ParserSpec extends AnyFlatSpec {
  "A Parser" must "handle empty input" in {
    assert("".isEmpty)
  }
}

it e they

Depois de nomear um assunto uma vez, use it (ou they) para adicionar outros comportamentos ao mesmo assunto sem repetir seu 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 agrupa testes com blocos describe aninhados e cláusulas it, produzindo uma saída hierárquica e legível.

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)
      }
    }
  }
}

Testes pendentes e ignorados

Marque testes inacabados como pending ou ignore um deles usando ignore em vez de test/in. Ambos mantêm a suíte verde e sinalizam que ainda há trabalho a fazer.

import org.scalatest.funsuite.AnyFunSuite

class WipSuite extends AnyFunSuite {
  test("feature not done") {
    pending
  }
  ignore("flaky test") {
    assert(false)
  }
}

Escolhendo um estilo

Orientações:

  • FunSuite — mínimo, semelhante ao xUnit e excelente para testes unitários.
  • FlatSpec — frases de comportamento legíveis.
  • FunSpec/WordSpec — agrupamento aninhado no estilo de especificação.

Escolha um por base de código e mantenha a consistência.

Executando os testes

Execute todos os testes com sbt test ou uma única suíte com sbt "testOnly *CalculatorSpec". ScalaTest relata o nome e o resultado de cada teste.

sbt test
sbt "testOnly *CalculatorSpec"

Verificação rápida

Teste seus conhecimentos sobre os estilos do ScalaTest.

Recapitulação

Você aprendeu os estilos do ScalaTest:

  • Adicione o ScalaTest com o escopo % Test.
  • AnyFunSuite: blocos test("...") { }.
  • AnyFlatSpec: comportamento should do sujeito in { }.
  • AnyFunSpec: describe/it aninhados.
  • Escolha um estilo por projeto; execute com sbt test.
Grátis para começar

Aprenda Scala com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
39
Aulas
143

Perguntas Frequentes

A aula “Estilos do ScalaTest” é grátis?

Sim — o texto completo de “Estilos do ScalaTest” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Scala for Backend Engineering & Functional Programming, atualize para CoddyKit PRO. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.

O que vou aprender em “Estilos do ScalaTest”?

FlatSpec e FunSuite. Você pratica Scala for Backend Engineering & Functional Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Scala for Backend Engineering & Functional Programming?

Nenhuma experiência prévia é necessária. Scala for Backend Engineering & Functional Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Estilos do ScalaTest”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Scala for Backend Engineering & Functional Programming?

Sim. Cada aula de Scala for Backend Engineering & Functional Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Estilos do ScalaTest
  2. Matchers
  3. Testes baseados em propriedades
  4. Mocks e fixtures
← Voltar para Scala for Backend Engineering & Functional Programming