Webサイトには文書化されておらず、フレームワークのセットアップに問題があるようです。誰かがサンプルプロジェクトのセットアップの段階的な紹介を見せてもらえますか?
Arlaharenが言ったことは基本的に正しいです。ただし、リンカーエラーを説明する部分を省略しました。まず、ランタイムライブラリとしてCRTを使用せずにアプリケーションをビルドする必要があります。とにかくこれを行う必要があります。アプリケーションの配布が本当に簡単になるからです。これを行わない場合、すべてのユーザーはVisual C++ランタイムライブラリをインストールする必要があり、そうしない人はシステムにミステリアスなDLLが欠けていることについて不平を言うでしょう...リンクするのに余分な数百キロバイトかかりますCRTを静的に使用すると、後のサポートで頭痛の種を大幅に減らすことができます(この点については私に信頼してください-大変な方法で学習しました!)。
とにかく、これを行うには、ターゲットのプロパティ-> C/C++->コード生成->ランタイムライブラリに移動し、リリースビルドでは「マルチスレッド」として設定し、リリースビルドでは「マルチスレッドデバッグ」として設定する必要がありますデバッグビルド。
Gtestライブラリは同じ方法で構築されるため、正しいバージョンのitにリンクしていることを確認する必要があります。そうしないと、リンカーがプルしますあなたが見たエラーであるランタイムライブラリの別のコピー(ところで、これはMFCを使用しているかどうかに違いはありません) gtestをデバッグとリリースの両方モードとしてビルドし、両方のコピーを保持する必要があります。次に、リリースビルドのgtest.lib/gtest_main.libおよびデバッグビルドのgtestd.lib/gtest_maind.libにリンクします。
また、アプリケーションがgtestヘッダーファイルが保存されているディレクトリ(プロパティ-> C/C++->全般->追加インクルードディレクトリ)を指していることを確認する必要がありますが、リンカーエラーが発生した場合は、すでにこの部分を正しく取得できていないか、最初に対処する必要があるコンパイラエラーがはるかに多いことを確認してください。
(これらの手順により、デバッグ構成でテストフレームワークが機能します。リリース構成に同じプロセスを適用するのは非常に簡単です。)
Google C++ Testing Frameworkを入手してください
C:\gtest
_に解凍しますフレームワークライブラリを構築する
C:\gtest\msvc\gtest.sln
_を開きますテストプロジェクトの作成と設定
C:\gtest\include
_を追加C:\gtest\msvc\gtest\Debug
_または_C:\gtest\msvc\gtest-md\Debug
_を追加しますgtestd.lib
_を追加すべての動作を検証する
main()
関数を含むテストプロジェクトでcppを開きます。次のコードを貼り付けます。
_#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
}
_
デバッグ>デバッグの開始
すべてがうまくいくと、コンソールウィンドウが表示され、単体テストの結果が表示されます。
セットアップに関するビデオチュートリアルを行いました: http://www.youtube.com/watch?v=mzSzwQOmMRs
テスト用に独自のmain()を作成したくない場合は、gtest_main.libで定義されたmain()関数を使用できますが、VS2012で「エントリポイントを定義する必要があります」というリンカーエラーが発生します。テストプロジェクトでProjectProperties-> Linker-> System-> SubSystemを「Console」に設定します。これにより、VS2012は「main()」というエントリポイントを検索し、gtest_main.libで検索します(リンクした場合)適切に)。
Gtestを構築したら、これが私がやったことです。
その後、必要に応じてTESTまたはTEST_Fを使用してテストを記述し、メイン関数と一緒にコンパイルします。
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Microsoft Visual Studioでは、ランタイムライブラリタイプの設定が間違っていると、リンクエラーが発生します。
VS 2005(および2008)は、デフォルトとしてマルチスレッドDLLまたはマルチスレッドデバッグDLL=を使用します。ただし、GoogleテストライブラリはデフォルトとしてMulithreadedまたはMulithreadedデバッグランタイムを使用します。
そのため、Googleテストライブラリに適切なランタイムライブラリタイプを選択します。 ([構成プロパティ]-> [コード生成]-> [ランタイムライブラリ])。
多くのエラー、修正に時間がかかりました。
簡単な手順を次に示します。
#次からGoogletest Zipファイルをダウンロード: https://github.com/google/googletest
#Googletest Visual Studioソリューション
Open C:\googletest\googletest\msvc\2010\gtest.sln
Change "Solution configuration"
from "Debug" to "Release"
Build Solution
creates gtest.lib
#プロジェクト:
Project Properties > Configuration Properties > VC++ Directories > Include Directories
append the following: ;C:\googletest\googletest\include
Project Properties > Configuration Properties > Linker > General > Additional Library Directories >
append the following: ;C:\googletest\googletest\msvc\2010\gtest\Win32-Release
Project Properties > Configuration Properties > C/C++ > Runtime Library
Remove the value of the above. (or match it to Googletest project)