Unit Test
C์ธ์ด์์ ๋จ์ ํ
์คํธ(Unit Test)๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ ๊ฐ๋จํ ํจ์์ ํจ๊ป assert ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. assert ๋งคํฌ๋ก๋ ์กฐ๊ฑด์ด ์ฐธ์ด ์๋ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ์ข
๋ฃ์ํค๋ฏ๋ก, ์์๋ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๊ฒฐ๊ณผ์ ์ผ์นํ๋์ง ๊ฒ์ฆํ๋ ๋ฐ ์ ์ฉํ๋ค. ๋ ๋ณต์กํ ํ
์คํธ ์๊ตฌ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ, C์ธ์ด์ฉ ํ
์คํธ ํ๋ ์์ํฌ(์: CUnit, Unity, CMocka ๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ฌ๊ธฐ์๋ ๊ฐ๋จํ add ํจ์์ ์ด ํจ์์ ๋ํ ๋จ์ ํ
์คํธ ์์ ๊ฐ ํฌํจ๋์ด ์๋ค. ์ด ์์ ๋ assert๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋๋ค.
asset ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ assert.h๋ฅผ include ํด์ผ ํ๋ค.
#include <stdio.h>
#include <assert.h>
// ๊ฐ๋จํ ๋ง์
ํจ์ ์ ์
int add(int a, int b) {
return a + b;
}
// add ํจ์๋ฅผ ํ
์คํธํ๊ธฐ ์ํ ๋จ์ ํ
์คํธ ํจ์
void test_add() {
assert(add(0, 0) == 0); // 0 + 0 = 0
assert(add(-1, 1) == 0); // -1 + 1 = 0
assert(add(10, 20) == 30); // 10 + 20 = 30
assert(add(-5, -10) == -15); // -5 + -10 = -15
// ํ
์คํธ๊ฐ ์ฌ๊ธฐ๊น์ง ์งํ๋๋ฉด ๋ชจ๋ assert ์กฐ๊ฑด์ด ์ฐธ์ด๋ผ๋ ์๋ฏธ์ด๋ฉฐ, ํจ์๊ฐ ์์๋๋ก ์๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
printf("All tests passed.\n");
}
int main() {
test_add(); // ๋จ์ ํ
์คํธ ์คํ
return 0;
}
์ด ์์ ์์ add ํจ์๋ ๋ ์ ์๋ฅผ ์
๋ ฅ๋ฐ์ ๊ทธ ํฉ์ ๋ฐํํ๋ค. test_add ํจ์๋ add ํจ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ๊ฒ์ฆํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ฌ๋ก๋ฅผ ํ
์คํธํ๋ค. ๊ฐ assert ํธ์ถ์ add ํจ์์ ํน์ ์
๋ ฅ์ ์ ๊ณตํ๊ณ , ์์๋๋ ์ถ๋ ฅ๊ณผ ์ค์ ์ถ๋ ฅ์ด ์ผ์นํ๋์ง ํ์ธํ๋ค. ๋ง์ฝ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ, assert๋ ํ๋ก๊ทธ๋จ์ ์ฆ์ ์ข
๋ฃ์ํค๋ฉฐ, ์ด๋ ํ
์คํธ ์คํจ๋ฅผ ์๋ฏธํ๋ค.
๋จ์ ํ
์คํธ๋ ์ฝ๋์ ๊ฐ ๋ถ๋ถ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ๋ ๋ฐ ๋งค์ฐ ์ค์ํ๋ค. ์ด๋ ํนํ ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ๋์ฑ ์ค์ํด์ง๋ฉฐ, ์ด๋ฅผ ํตํด ๋ ๋ณต์กํ ์์คํ
์์๋ ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ์ ์งํ ์ ์๋ค.
์ด ํฌ์คํ
์ Unit Test์ ๋ํด ๊ฐ๋จํ ์๊ฐํ๋ค. ํ์ง๋ง Unit Test์๋ ๋ค์ํ ์ข
๋ฅ๊ฐ ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด ์์ ์ด ์ค๊ณํ ์ฝ๋์ ์ ๋ขฐ์ฑ์ ๋์ด๋ ๊ฒ์ ์ค์ํ ์์
์ด๋ค.
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 30. C์ธ์ด Unit Test ์ข ๋ฅ (2) | 2024.11.12 |
---|---|
[C/C++ Tip] 28. C์ธ์ด ํฌ์ธํฐ์ ๋ค์ํ ํํ๋ค (0) | 2024.11.11 |
[C/C++ Tip] 27. C์ธ์ด ๋ฐ์ดํฐ ํ์ ๋ฒ์ (0) | 2024.11.11 |
[C/C++ Tip] 26. Char, String ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ (1) | 2024.11.10 |
[C/C++ Tip] 25. C์ธ์ด 2์ฐจ์ ๋ฐฐ์ด (0) | 2024.11.10 |