#title C++/GoogleTest(GTest) SetUp TearDown 계층 구조 #keywords C++, GoogleTest, 단위 테스트 GTest에는 3가지 레벨의 SetUp/TearDown이 있다. 1. Global (Environment) {{{#!vim cpp class MyEnv : public ::testing::Environment { void SetUp() override { /* 전체 프로세스에서 1번 */ } void TearDown() override { /* 전체 프로세스에서 1번 */ } }; // main에서 등록 ::testing::AddGlobalTestEnvironment(new MyEnv()); }}} 2. Test Suite (Fixture 단위) {{{#!vim cpp class MyFixture : public ::testing::Test { static void SetUpTestSuite() { /* 해당 Fixture의 첫 테스트 전 1번 */ } static void TearDownTestSuite() { /* 해당 Fixture의 마지막 테스트 후 1번 */ } }; }}} 3. Test Case (개별 테스트) {{{#!vim cpp class MyFixture : public ::testing::Test { void SetUp() override { /* 매 TEST_F 실행 전 */ } void TearDown() override { /* 매 TEST_F 실행 후 */ } }; }}} 실행 순서 {{{#!vim sh Environment::SetUp() ← 1번 (프로세스) SetUpTestSuite() ← 1번 (Fixture A) SetUp() ← 매번 (Test A-1) TearDown() SetUp() ← 매번 (Test A-2) TearDown() TearDownTestSuite() SetUpTestSuite() ← 1번 (Fixture B) SetUp() ← 매번 (Test B-1) TearDown() TearDownTestSuite() Environment::TearDown() ← 1번 (프로세스) }}} ---- CategoryDocument