유닛테스트는 구현된 부분을 테스트하며
버그를 수정하여 로직의 완성도를 높이는 것이다
유닛테스트의 장점은
초기 단계에서 버그를 잡을 수 있고
샘플 코드의 역할을 한다
또한, 유지 보수를 쉽게 만들어준다
C++에서 Unit Test를 하기 위해서는
Google Test를 이용하는 방법이 있다
이는 빌드해서 바이너리를 실행해야 테스트가 가능하다는 복잡함이 있지만
Unit Test는 그만큼 중요하기 때문에 필수불가결하게 여겨지고 있다
간단한 예시는 아래와 같다
// GameLogic.h
#pragma once
class Enemy
{
public:
float health;
};
class Player
{
public:
void Attack(Enemy& enemy, float damage);
};
// GameLogic.cpp
#include "GameLogic.h"
void Player::Attack(Enemy& enemy, float damage)
{
// 적의 체력을 공격력만큼 감소시킵니다.
enemy.health -= damage;
}
// GameLogicTest.cpp
#include "GameLogic.h"
#include <gtest/gtest.h>
TEST(PlayerTest, AttackTest)
{
Player player;
Enemy enemy;
enemy.health = 100.0f; // 적의 초기 체력 설정
float damage = 20.0f; // 플레이어의 공격력 설정
// 예상된 결과를 계산
float expectedHealth = enemy.health - damage;
// 플레이어가 적을 공격한 후의 실제 체력을 계산
player.Attack(enemy, damage);
// 예상된 결과와 실제 결과를 비교하여 테스트
ASSERT_FLOAT_EQ(expectedHealth, enemy.health);
}
'C++ > [노코프] Tips' 카테고리의 다른 글
[C++ Tips] 클래스/구조체 멤버 정렬 (0) | 2024.04.05 |
---|---|
[C++ Tips] switch case (0) | 2024.04.05 |
[C++ Tips] 생성자 리스트 (0) | 2024.04.04 |
[C++ Tips] random library (0) | 2024.04.04 |
[C++ Tips] const, constexpr (0) | 2024.04.04 |