0Pricing
C++ Academy · Aula

Fixtures e configuração

Compartilhe a configuração dos testes

Fixtures e configuração é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 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 C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

Compartilhando a configuração entre testes

Quando vários testes precisam dos mesmos objetos, um contexto de teste permite definir essa configuração uma única vez. Um contexto de teste é uma classe derivada de ::testing::Test.

Definindo um contexto de teste

Os membros do contexto de teste ficam acessíveis em cada teste que o utiliza. SetUp() é executado antes de cada teste; TearDown() é executado depois.

#include <gtest/gtest.h>
#include <vector>

class VectorTest : public ::testing::Test {
protected:
    std::vector<int> v;
    void SetUp() override { v = {1, 2, 3}; }
};

Usando TEST_F

Os testes que usam um contexto de teste são escritos com TEST_F, passando o nome da classe do contexto como primeiro argumento.

#include <gtest/gtest.h>
#include <vector>

class VectorTest : public ::testing::Test {
protected:
    std::vector<int> v{1, 2, 3};
};

TEST_F(VectorTest, HasThree) {
    EXPECT_EQ(v.size(), 3u);
}

TEST_F(VectorTest, FirstIsOne) {
    EXPECT_EQ(v.front(), 1);
}

Uma nova instância por teste

O GTest cria um novo objeto de contexto de teste para cada teste. Os testes nunca compartilham estado mutável, portanto permanecem independentes e a ordem não importa.

SetUp versus construtor

Você pode inicializar membros no construtor ou em SetUp(). Use SetUp() quando a inicialização puder lançar uma exceção ou quando quiser chamar métodos virtuais com segurança.

#include <gtest/gtest.h>

class Resource : public ::testing::Test {
protected:
    int* data = nullptr;
    void SetUp() override { data = new int(10); }
    void TearDown() override { delete data; }
};

TEST_F(Resource, HasTen) {
    EXPECT_EQ(*data, 10);
}

TearDown para limpeza

TearDown() libera os recursos adquiridos em SetUp(). Com membros RAII, o destrutor geralmente cuida disso automaticamente, e talvez você nem precise de TearDown().

Configuração no nível da suíte

Para recursos compartilhados dispendiosos, use SetUpTestSuite() e TearDownTestSuite() estáticos. Eles são executados uma vez por suíte, não uma vez por teste.

#include <gtest/gtest.h>

class DbTest : public ::testing::Test {
protected:
    static void SetUpTestSuite() { /* open shared connection */ }
    static void TearDownTestSuite() { /* close it */ }
};

Por teste versus por suíte

Escolha com cuidado.

  • SetUp/TearDown: por teste, isolado e seguro
  • SetUpTestSuite/TearDownTestSuite: por suíte, compartilhado e mais rápido, mas os testes podem interferir uns nos outros

Métodos auxiliares

Os contextos de teste podem conter métodos auxiliares usados por vários testes, mantendo cada teste concentrado em suas asserções.

#include <gtest/gtest.h>
#include <string>

class ParserTest : public ::testing::Test {
protected:
    int parse(const std::string& s) { return std::stoi(s); }
};

TEST_F(ParserTest, ParsesNumber) {
    EXPECT_EQ(parse("42"), 42);
}

Ambiente global

Para uma configuração que abranja todo o processo, executada uma vez antes de qualquer teste, registre um ::testing::Environment por meio de AddGlobalTestEnvironment. Isso é útil para registro de eventos ou inicialização da estrutura.

Mantendo os testes independentes

Como cada TEST_F recebe um contexto de teste novo, nunca dependa dos efeitos colaterais de outro teste. A independência facilita o diagnóstico de falhas e torna os testes seguros para execução paralela.

Verificação rápida

Relembre o ciclo de vida do contexto de teste.

Recapitulação

Você aprendeu sobre contextos de teste.

  • Derive de ::testing::Test e use TEST_F
  • SetUp/TearDown são executados por teste; um objeto novo é criado a cada vez
  • Use SetUpTestSuite para recursos compartilhados, criados uma vez por suíte
  • Auxiliares e ambientes globais ajudam em suítes maiores

Perguntas Frequentes

A aula “Fixtures e configuração” é grátis?

Sim — o texto completo de “Fixtures e configuração” é 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 C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Fixtures e configuração”?

Compartilhe a configuração dos testes Você pratica C++ Academy 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 C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy 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 3 de 4.

Quanto tempo leva a aula “Fixtures e configuração”?

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 C++ Academy?

Sim. Cada aula de C++ Academy 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. Configuração do GTest
  2. Asserções e matchers
  3. Fixtures e configuração
  4. Mocking com GMock
← Voltar para C++ Academy