Fixtures y configuración
Comparta la configuración de las pruebas
Fixtures y configuración es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 3 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 C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.
Compartir la configuración entre pruebas
Cuando varias pruebas necesitan los mismos objetos, un fixture permite definir esa configuración una sola vez. Un fixture es una clase que hereda de ::testing::Test.
Definir un fixture
Los miembros del fixture están disponibles en cada prueba que lo utiliza. SetUp() se ejecuta antes de cada prueba y TearDown() después.
#include <gtest/gtest.h>
#include <vector>
class VectorTest : public ::testing::Test {
protected:
std::vector<int> v;
void SetUp() override { v = {1, 2, 3}; }
};Usar TEST_F
Las pruebas que utilizan un fixture se escriben con TEST_F, pasando el nombre de la clase del fixture como primer 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);
}Una instancia nueva por prueba
GTest crea un objeto de fixture nuevo para cada prueba. Las pruebas nunca comparten estado mutable, por lo que son independientes y el orden no importa.
SetUp frente al constructor
Puede inicializar los miembros en el constructor o en SetUp(). Utilice SetUp() cuando la inicialización pueda lanzar una excepción o cuando quiera llamar a métodos virtuales de forma segura.
#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 la limpieza
TearDown() libera los recursos adquiridos en SetUp(). Con miembros RAII, el destructor suele encargarse de esto automáticamente, por lo que quizá no necesite TearDown().
Configuración a nivel de suite
Para recursos compartidos costosos, utilice SetUpTestSuite() y TearDownTestSuite() estáticos. Se ejecutan una vez por suite, no una vez por prueba.
#include <gtest/gtest.h>
class DbTest : public ::testing::Test {
protected:
static void SetUpTestSuite() { /* open shared connection */ }
static void TearDownTestSuite() { /* close it */ }
};Por prueba frente a por suite
Elija con cuidado.
SetUp/TearDown: por prueba, aislados y segurosSetUpTestSuite/TearDownTestSuite: por suite, compartidos y más rápidos, pero las pruebas pueden interferir entre sí
Métodos auxiliares
Los fixtures pueden contener métodos auxiliares utilizados por varias pruebas, de modo que cada prueba se centre en sus aserciones.
#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);
}Entorno global
Para una configuración que abarque todo el proceso, que se ejecute una vez antes de cualquier prueba, registre un ::testing::Environment mediante AddGlobalTestEnvironment. Resulta útil para el registro o la inicialización del framework.
Mantener la independencia de las pruebas
Como cada TEST_F obtiene un fixture nuevo, nunca dependa de los efectos secundarios de otra prueba. La independencia facilita el diagnóstico de los fallos y permite ejecutar las pruebas en paralelo de forma segura.
Comprobación rápida
Recuerde el ciclo de vida de un fixture.
Resumen
Ha aprendido sobre los fixtures.
- Herede de
::testing::Testy utiliceTEST_F SetUp/TearDownse ejecutan por prueba; cada vez se crea un objeto nuevo- Utilice
SetUpTestSuitepara recursos compartidos que se inicializan una vez por suite - Los auxiliares y los entornos globales ayudan a gestionar suites grandes
Preguntas frecuentes
¿La lección «Fixtures y configuración» es gratis?
Sí — el texto completo de «Fixtures y configuración» 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 C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Fixtures y configuración»?
Comparta la configuración de las pruebas Practicas C++ Academy 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 C++ Academy?
No se requiere experiencia previa. C++ Academy 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 3 de 4.
¿Cuánto tiempo toma la lección «Fixtures y configuración»?
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 C++ Academy?
Sí. Cada lección de C++ Academy 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
- Configuración de GTest
- Aserciones y matchers
- Fixtures y configuración
- Mocking con GMock