今私はCMakeでC++テスト環境を設定しています。実際に私は何をしたいのか分かりましたが、私は2つの異なるテスト出力スタイルで混乱しています。 私の例では、実際に 'make test'とは何ですか?私は 'make test'と './test/Test'の両方の出力が同じではあるが正確ではないと思う。 'make test'の出力はgoogletestの出力スタイルとは異なります。テスト結果は同じですが、私はこれらの出力に満足できませんでした。なぜ「make test」と「./test/Test」
出力差
$ make test
Running tests...
Test project /path/to/sample/build
Start 1: MyTest
1/1 Test #1: MyTest ...........................***Failed 0.02 sec
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.02 sec
The following tests FAILED:
1 - MyTest (Failed)
Errors while running CTest
make: *** [test] エラー 8
$ ./test/Test
Running main() from gtest_main.cc
[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 2 tests from MyLibTest
[ RUN ] MyLibTest.valCheck
/path/to/test/test.cc:10: Failure
Expected: sqr(1.0)
Which is: 1
To be equal to: 2.0
Which is: 2
[ FAILED ] MyLibTest.valCheck (0 ms)
[ RUN ] MyLibTest.negativeValCheck
[ OK ] MyLibTest.negativeValCheck (0 ms)
[----------] 2 tests from MyLibTest (0 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran. (0 ms total)
[ PASSED ] 1 test.
[ FAILED ] 1 test, listed below:
[ FAILED ] MyLibTest.valCheck
1 FAILED TEST
コマンド
mkdir build
cd build
cmake ..
make test // NOT googletest output style
./test/Test // It looks googletest output
私の環境
root
- CMakeLists.txt
+ src/
- CMakeLists.txt
- main.cc
- sqr.cc
- sqr.h
+ test/
- CMakeLists.txt
- test.cc
ルートは、あなたが(cTEST収録の動作を変更することができます
cmake_minimum_required(VERSION 2.8)
project (MYTEST)
add_subdirectory(src)
add_subdirectory(test)
enable_testing()
add_test(NAME MyTest COMMAND Test)
テスト/ CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set(GTEST_ROOT /path/to/googletest/googletest)
include_directories(${GTEST_ROOT}/include/)
link_directories(${GTEST_ROOT}/build/)
add_executable(Test ${CMAKE_CURRENT_SOURCE_DIR}/test.cc)
target_link_libraries(Test sqr gtest gtest_main pthread)
テスト/テスト/ ccの
#include "../src/sqr.h"
#include <gtest/gtest.h>
namespace {
class MyLibTest : public ::testing::Test{};
TEST_F(MyLibTest, valCheck) {
EXPECT_EQ(sqr(3.0), 9.0);
EXPECT_EQ(sqr(1.0), 2.0); // it fails!
}
TEST_F(MyLibTest, negativeValCheck) {
EXPECT_EQ(sqr(-3.0), 9.0);
}
}
です。 'Testing/Temporary/LastTest.log'をチェックしてください。 'make test 'で見られるのは、** CTest **の出力です。これは最終結果のみを表示します。 – DevSolar