0Pricing
C++ Academy · 강의

픽스처와 설정

테스트 설정 공유하기

픽스처와 설정은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

테스트 간 설정 공유

여러 테스트에 같은 객체가 필요할 때는 픽스처를 사용하여 해당 설정을 한 번만 정의할 수 있습니다. 픽스처는 ::testing::Test를 상속하는 클래스입니다.

픽스처 정의

픽스처를 사용하는 각 테스트에서는 픽스처의 멤버에 접근할 수 있습니다. SetUp()은 모든 테스트 전에 실행되고 TearDown()은 이후에 실행됩니다.

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

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

TEST_F 사용하기

픽스처를 사용하는 테스트는 첫 번째 인수로 픽스처 클래스 이름을 전달하는 TEST_F로 작성합니다.

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

테스트마다 새 인스턴스

GTest는 모든 테스트마다 새 픽스처 객체를 생성합니다. 테스트는 변경 가능한 상태를 절대 공유하지 않으므로 서로 독립적이며 실행 순서도 중요하지 않습니다.

SetUp과 생성자 비교

생성자 또는 SetUp()에서 멤버를 초기화할 수 있습니다. 초기화 과정에서 예외가 발생할 수 있거나 가상 메서드를 안전하게 호출하려는 경우에는 SetUp()을 사용하세요.

#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

TearDown()은 SetUp()에서 확보한 리소스를 해제합니다. RAII 멤버를 사용하면 소멸자가 이 작업을 자동으로 처리하는 경우가 많으므로 TearDown()이 전혀 필요하지 않을 수도 있습니다.

테스트 스위트 수준 설정

비용이 큰 공유 리소스에는 정적 SetUpTestSuite()과 TearDownTestSuite()을 사용하세요. 이 함수들은 테스트마다가 아니라 스위트마다 한 번 실행됩니다.

#include <gtest/gtest.h>

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

테스트별 설정과 스위트별 설정

신중하게 선택하세요.

  • SetUp/TearDown: 테스트마다 실행되며 격리되고 안전합니다
  • SetUpTestSuite/TearDownTestSuite: 스위트마다 실행되며 공유되므로 더 빠르지만 테스트끼리 간섭할 수 있습니다

도우미 메서드

픽스처에 여러 테스트에서 사용하는 도우미 메서드를 포함하면 각 테스트가 어설션에 집중할 수 있습니다.

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

전역 환경

프로세스 전체의 설정(모든 테스트 전에 한 번 실행)이 필요하다면 AddGlobalTestEnvironment를 통해 ::testing::Environment를 등록하세요. 로그 기록이나 프레임워크 초기화에 유용합니다.

테스트 독립성 유지

각 TEST_F가 새 픽스처를 받으므로 다른 테스트의 부수 효과에 의존하지 마세요. 독립성을 유지하면 실패 원인을 쉽게 진단할 수 있고 테스트를 안전하게 병렬화할 수 있습니다.

빠른 확인

픽스처의 수명 주기를 떠올려 보세요.

복습

픽스처를 배웠습니다.

  • ::testing::Test를 상속하고 TEST_F를 사용합니다
  • SetUp/TearDown은 테스트마다 실행되며 매번 새 객체가 생성됩니다
  • 공유되고 스위트마다 한 번만 필요한 리소스에는 SetUpTestSuite을 사용합니다
  • 도우미와 전역 환경은 규모가 큰 스위트에 도움이 됩니다

자주 묻는 질문

“픽스처와 설정” 강의는 무료인가요?

네 — “픽스처와 설정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“픽스처와 설정”에서 뭘 배우나요?

테스트 설정 공유하기 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C++ Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“픽스처와 설정” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. GTest 설정하기
  2. 검증과 매처
  3. 픽스처와 설정
  4. GMock으로 모킹하기
← C++ Academy(으)로 돌아가기