Google Test入門チュートリアル


Google Test入門チュートリアル

  • 断言構文
  • アーキテクチャ
  • 起動テスト
  • 簡単な例
  • アサーション構文


    Assert:失敗後終了Expect:失敗後続行
    ASSERT_TRUE(condition);
    ASSERT_FALSE(condition);
    ASSERT_EQ(val1, val2);
    ASSERT_NQ(val1, val2);
    

    エラーメッセージの印刷に失敗しました
    EXPECT_EQ(val1, val2) << "val1 and va2 differ;
    

    スキーマ#スキーマ#


    TESTのテスト例
    //TestSuitName = functionName + "Test"
    TEST(TestSuitName, TestName) {
    	...
    }
    

    Test Fixture継承::testing::Testは複数のTESTに同じデータ構成を使用させる
    class QueueTest : public ::testing:Test {
    protected:
     void SetUp() override;   // test 
     void TearDown() override;  // test 
    }
    // TEST_F TEST Test Fixture
    // TEST_F Test Fixture 
    TEST_F(QueueTest , test1) {
    	...
    }
    

    プロセスの実行:
  • QueTestオブジェクトqt
  • を作成する
  • はqtを呼び出す.SetUp()初期化リソース
  • qtを使用してtest 1
  • を実行する
  • はqtを呼び出す.TearDown()リソースの破棄
  • 析構qt
  • テストの開始


    InitGoogleTest解析コマンドラインのgoogleTestパラメータ
    利用するRUN_ALL-TEST()はすべてのテストを開始し、すべてのテストが成功した場合、0を返し、そうでなければ1を返します.
    int main(int argc, char* argv[])
    {
    	::testing::InitGoogleTest(&argc, argv);
    	return RUN_ALL_TESTS(); 
    }
    

    簡単な例です


    Foo.h:テスト対象クラス
    class Foo {
       bool foo(int val);
    }
    

    test_data.h:入出力データの格納
    class TestData {
    public:
    	int val = 0;
    }
    

    test_case.h:TestFixtureクラス
    class fooFT : public test::Test
    {
    protected:
    	void SetUp() {};
    	void TearDown() {};
    	Foo m_test; // 
    };
    

    test_case.cpp
    #include "test_case.h"
    #include "test_data.h"
    TEST_F(fooFT, footest)
    {
    	TestData testData;
    	int val = testData.val;
    	EXPECT_TRUE(m_test.fooTest(val));
    }