web-dev-qa-db-ja.com

2012年にLinuxでgoogletestを設定するにはどうすればよいですか?

Linuxマシンを使用しています。 googletestパッケージを ここ からダウンロードしました

ただし、正しく設定する方法に関するインストールガイドやその他のブログはありません。READMEファイルは、何について話しているのか理解できないので、良くありませんか?

そのgtestパッケージを使用して.ccファイル内の単純な関数をテストする方法の簡単な例を誰かが提供できますか?

20
Kit Ho

これが私がしたことであり、必要に応じて調整できます。 Linuxボックスのgtest-1.6.0.Zip( releases ページから)を〜/ Downloadsにダウンロードしました。完全に入力したのは/ home/me/Downloads /です。

Gtest-1.6.0.Zipの内容を〜/ Downloads/gtest-1.6.0 /に解凍します

cd /home/me/Downloads
unzip gtest-1.6.0.Zip

Gtestライブラリは、テスト実行可能ファイルに「含める」必要があるため、ビルドします。オブジェクトファイルgtest-all.oをコンパイルします。

g++ -Igtest-1.6.0/include -Igtest-1.6.0 -c gtest-1.6.0/src/gtest-all.cc

次に、ライブラリアーカイブlibgtest.aをビルドします。

ar -rv libgtest.a gtest-all.o

これで、〜/ Downloadsにtest.ccファイルを作成できます。これは、コンパイルを確認するために使用したテストファイルの例です。

#include "gtest/gtest.h"

TEST(blahTest, blah1) {
    EXPECT_EQ(1, 1);
}

int main (int argc, char** argv) {
    ::testing::InitGoogleTest(&argc, argv);

    int returnValue;

    //Do whatever setup here you will need for your tests here
    //
    //

    returnValue =  RUN_ALL_TESTS();

    //Do Your teardown here if required
    //
    //

    return returnValue;
}

独自のテストをコンパイルして実行するには:

g++ -I/home/me/Downloads/gtest-1.6.0/include -pthread test.cc libgtest.a -o test_executable

次にそれを実行するには:

./test_executable

そして、それはうまくいくはずです。そこから必要に応じて変更します。

14
James C

これらの手順により、テストフレームワークがデバッグ構成で機能するようになります。

Google C++テストフレームワークを入手

1.最新のgtestフレームワークをダウンロードします

2 ._C:\gtest_に解凍します

フレームワークライブラリを構築する

1. Visual Studioで_C:\gtest\msvc\gtest.sln_を開きます

2.構成を「デバッグ」に設定します

3.ソリューションの構築

テストプロジェクトの作成と構成

1.新しいソリューションを作成し、テンプレートVisual C++> Win32> Win32コンソールアプリケーションを選択します

2.新しく作成したプロジェクトを右クリックして、[プロパティ]を選択します

3.構成をデバッグに変更します。

4.構成プロパティ> C/C++>一般>追加のインクルードディレクトリ:_C:\gtest\include_を追加

5.構成プロパティ> C/C++>コード生成>ランタイムライブラリ:コードがランタイムDLLにリンクしている場合は、マルチスレッドデバッグDLL(/ MDd)を選択します。そうでない場合は、マルチスレッドを選択します。スレッド化されたデバッグ(/ MTd)。

6.構成プロパティ>リンカー>一般>追加のライブラリディレクトリ:_C:\gtest\msvc\gtest\Debug_を追加します

7.構成プロパティ>リンカー>入力>追加の依存関係:_gtestd.lib_を追加します

すべてが機能することを確認する

1. main()関数を含むテストプロジェクトでcppを開きます。

2.次のコードを貼り付けます。

_#include "stdafx.h"
#include <iostream>

#include "gtest/gtest.h"

    TEST(sample_test_case, sample_test)
    {
        EXPECT_EQ(1, 1);
    }

    int main(int argc, char** argv) 
    { 
        testing::InitGoogleTest(&argc, argv); 
        RUN_ALL_TESTS(); 
        std::getchar(); // keep console window open until Return keystroke
    }
_

1.デバッグ>デバッグの開始

これが機能する場合は、コンソールウィンドウが開いてテスト結果が表示されるはずです。

3
Darren Burgess

ジェームズCの答え への補遺:

gtest-1.6.0/src/gtest-all.ccを使用してライブラリを構築するには、自分でmainメソッドを提供する必要があることに注意してください。これを完全に回避し、Googletestが提供するmainメソッドのデフォルトの実装を使用する場合は、gtest_main.ccを含むライブラリをビルドします。

あれは:

g++ -Igtest-1.6.0/include -Igtest-1.6.0 -c gtest-1.6.0/src/gtest-all.cc gtest-1.6.0/src/gtest_main.cc
                                                                                       ^^^^^^^^^^^^^^
ar -rv libgtest_main.a gtest_main.o gtest-all.o
                       ^^^^^^^^^^^^

また、独自のメインメソッドの実装はnotSetUpおよびTearDownを定義するための推奨される方法であることに注意してください。行動;代わりにフィクスチャを使用する必要があります。トピックに関する Googletestのドキュメントを確認してください

1
levelont