私のプロジェクトでCtestとgoogletestを統合しようとしています。 https://crascit.com/2015/07/25/cmake-gtest/に記載されているように私のプロジェクトにgoogletestを含めました。googletestの初期化時にCmake/Ctestテストが失敗する
CoreTest.cppとCMakeLists.txtで新しいテストフォルダを作成しました。 CMakeListsが含まれています:
ADD_EXECUTABLE(CoreTest CoreTest.cpp)
TARGET_LINK_LIBRARIES(CoreTest corelib gtest gmock)
ADD_TEST(NAME CoreTest COMMAND CoreTest)
CoreTest.cppが含まれています
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
//return RUN_ALL_TESTS();
return 0;
}
これが失敗した:私はInitGoogleTestの行をコメント場合
1>------ Rebuild All started: Project: RUN_TESTS, Configuration: Debug x64 ------
1> Test project
1> Start 1: CoreTest
1> 1/1 Test #1: CoreTest .....................***Failed 1.52 sec
1>
1> 0% tests passed, 1 tests failed out of 1
しかし、テストは成功します。
ここで何が問題になるのでしょうか?
多くの感謝!
ありがとうございましたaxalis!私はコマンドラインから走ろうとしましたが、グーグレストのDLLが私のパスにないことがわかりました。これが問題でした。
私は複数のテストを追加しましたが、私はMSVCでcTESTを出力を見ることができます:
1>------ Rebuild All started: Project: RUN_TESTS, Configuration: Debug x64 ------
1> Test project
1> Start 1: CoreTest
1> 1/1 Test #1: CoreTest ..................... Passed 0.03 sec
1>
1> 100% tests passed, 0 tests failed out of 1
は、私は、コンソールから何を得るのようなgoogletest出力を見るためにそこの方法です:?
>CoreTest.exe
[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 2 tests from MathTest
[ RUN ] MathTest.TwoPlusTwoEqualsFour
[ OK ] MathTest.TwoPlusTwoEqualsFour (0 ms)
[ RUN ] MathTest.TwoPlusFourEqualsSix
[ OK ] MathTest.TwoPlusFourEqualsSix (0 ms)
[----------] 2 tests from MathTest (1 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran. (4 ms total)
[ PASSED ] 2 tests.
コマンドラインから直接 'CoreTest'コマンドを実行すると、どのような出力が得られますか? (セグメンテーションやテストが失敗する他の手がかりがあるかもしれません - CMakeテストの実行は失敗/成功の状態のみを表示し、実際のエラーは表示しません)、または通常 "Testing"フォルダ内のレポートを見つけることができます) – axalis
特に実際のテストが実行されていなければBoostテストは失敗し、InitGoogleTestが追加される前に、実行されていない可能性があります。されていませんでした。したがって、実行するコードに少なくとも1つのテストがあることを確認してください。 – axalis
@Guillaume最初のコメント: 'RUN_TESTS'ターゲットはCMakeによって生成され、' RUN_TESTS'を通してctestコマンドを実行する際に使用されるオプションを制御する方法があるかどうかはわかりません。コマンドラインで 'ctest'を実行すると、-Vを加えてすべての出力を得ることができます。今私の質問:私はあなたと同じ元の問題があります。どのように修正しましたか? gtest DLLパスをCTestに渡しましたか?例えば、CMake変数を通して?'RUN_TESTS'を動作させる唯一の方法は、gtest DLLをすべてのアプリケーションのDLLが存在するインストールディレクトリにコピーした場合です。応答ありがとう – NameRakes