我開始使用Google Test對我的代碼運行單元測試。我在Ubuntu 12.04上使用Eclipse Kepler。C++ Google測試運行兩次
我使用的是第一次測試的類:
AllTests.cpp
#include "gtest/gtest.h"
#include "SerialManagerTest.cpp"
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
SerialManagerTest.cpp
#include "gtest/gtest.h"
#include "SerialManager.h"
#include "SerialInterface.h"
#include "FakeSerialHandler.h"
namespace {
TEST(TestingSerialManager, FirstTest) {
SerialInterface *fakeSerialHandler=new FakeSerialHandler();
SerialManager* serialManager=new SerialManager(fakeSerialHandler);
ASSERT_TRUE(serialManager->OpenPort());
delete serialManager;
}
TEST(TestingSerialManager, SecondTest) {
SerialInterface *fakeSerialHandler=new FakeSerialHandler();
SerialManager* serialManager=new SerialManager(fakeSerialHandler);
ASSERT_FALSE(!serialManager->OpenPort());
delete serialManager;
}
}
當我進行的測試,我得到這個輸出
[==========] Running 4 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 4 tests from TestingSerialManager
[ RUN ] TestingSerialManager.FirstTest
[ OK ] TestingSerialManager.FirstTest (0 ms)
[ RUN ] TestingSerialManager.SecondTest
[ OK ] TestingSerialManager.SecondTest (0 ms)
[ RUN ] TestingSerialManager.FirstTest
[ OK ] TestingSerialManager.FirstTest (0 ms)
[ RUN ] TestingSerialManager.SecondTest
[ OK ] TestingSerialManager.SecondTest (0 ms)
[----------] 4 tests from TestingSerialManager (2 ms total)
[----------] Global test environment tear-down
[==========] 4 tests from 1 test case ran. (3 ms total)
[ PASSED ] 4 tests.
爲什麼每個測試都被處理兩次?
匿名命名空間看起來很腥,嘗試沒有它? – PlasmaHH
是的。刪除命名空間會導致多個定義錯誤'TestingSerialManager_FirstTest_Test :: test_info_' – user2749716
這就是你的問題,那麼你有多個測試定義,匿名命名空間通過給它們不同的名字來隱藏這個。 – PlasmaHH