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 seguroSetUpTestSuite/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::Teste useTEST_F SetUp/TearDownsão executados por teste; um objeto novo é criado a cada vez- Use
SetUpTestSuitepara 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
- Configuração do GTest
- Asserções e matchers
- Fixtures e configuração
- Mocking com GMock