gtest - Gakgu/Gakgu.github.io GitHub Wiki

gtest๋ž€?

๊ตฌ๊ธ€์—์„œ ์ œ๊ณตํ•˜๋Š” C++ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

๊ตฌ์„ฑ

  • header
    #include <gtest/gtest.h>
  • library
    libgtest.so
    libgtest_main.so

์ž‘์„ฑ

TEST() Macro

TEST(ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค, ํ…Œ์ŠคํŠธ) {
  ...
}
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ด๋ฆ„์€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ „์ฒด ์ด๋ฆ„์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค.ํ…Œ์ŠคํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

TEST_F() Macro

TEST_F(ํ…Œ์ŠคํŠธ ํ”ฝ์Šค์ณ ํด๋ž˜์Šค, ํ…Œ์ŠคํŠธ) {
  ...
}
  • Test Fixtures์˜ ์•ฝ์ž๋กœ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

Test Fixture Class

  • ::testing::Test ํด๋ž˜์Šค์—์„œ ์ƒ์†๋ฐ›๋Š”๋‹ค.
  • SetUp() ์‚ฌ์šฉ
  • TearDown()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ
  • ํ…Œ์ŠคํŠธ์— ๋…ธ์ถœ์‹œํ‚ฌ ๋งด๋ฒ„๋Š” public ๋˜๋Š” protected๋กœ ์ž‘์„ฑํ•œ๋‹ค.

ํ˜ธ์ถœ

  • ๋ฉ”์ธํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
int main(int argc, char **argv)
{
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}
  • gtest_main ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    libgtest_main.so๋ฅผ ๋งํฌํ•œ ํ›„ ๋ฉ”์ธํ•จ์ˆ˜ ์—†์ด ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

  • ํŠน์ • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งŒ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

$ [test_bin] --gtest_filter=[ํ…Œ์ŠคํŠธ์ผ€์ด์Šค].[ํ…Œ์ŠคํŠธ]

ํ•จ์ˆ˜

ASSERT, EXPECT ์ฐจ์ด

  • ASSERT - ํ…Œ์ŠคํŠธ ๋ฐ”๋กœ ์ค‘๋‹จ
  • EXPECT - ํ…Œ์ŠคํŠธ ๊ณ„์† ์‹คํ–‰

๋ฉ”์„ธ์ง€ ์ถ”๊ฐ€

ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜ ๋’ค์— << "๋ฉ”์„ธ์ง€"๋ฅผ ๋ถ™์—ฌ์„œ ๋ฉ”์„ธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

// example
EXPECT_EQ(0, func()) << "ํ•จ์ˆ˜ ์„ฑ๊ณต";