1
我想測試我的代碼爲斐波那契序列寫在單獨的文件(說明!),但我不知道如何編譯。谷歌測試幾個文件
fib.h:
#ifndef FIB_H
#define FIB_H
#include <gtest/gtest.h>
class fib
{
public:
int fibRec(int n);
};
TEST(testFib, firstTest)
{
fib fibnumber;
EXPECT_EQ(55, fibnumber.fibRec(10));
EXPECT_EQ(13, fibnumber.fibRec(8));
EXPECT_EQ(89, fibnumber.fibRec(11));
EXPECT_EQ(3, fibnumber.fibRec(5));
}
#endif // FIB_H
fib.cpp:
#include "fib.h"
int fib::fibRec(int n)
{
if(n <= 0) return 0;
if(n == 1) return 1;
else return(fibRec(n-1)+fibRec(n-2));
}
main.cpp中:
#include <limits>
#include "fib.h"
int main(int argc, char *argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
我libgtest.a
是/home/me/gtest
和include
是/home/me/gtest/gtest-1.7.0/include
。 我試圖編譯和終端相剋運行測試++這樣的,但它沒有工作
$ g++ -c fib.cpp
$ g++ -c fib.h
$ g++ -c main.cpp
$ g++ -I/home/me/gtest/gtest-1.7.0/include -pthread main.cpp libgtest.a -o test_exe
什麼我做錯了或者說什麼我要補充?
編輯:
我試圖$ g++ -I/home/me/gtest/gtest-1.7.0/include -pthread main.cpp fib.cpp libgtest.a -o test_exe
,但我得到一個錯誤
/tmp/ccTTfKeF.o:(.bss+0x0): multiple definition of `testFib_firstTest_Test::test_info_'
/tmp/ccq6EExi.o:(.bss+0x0): first defined here
/tmp/ccTTfKeF.o: In function `testFib_firstTest_Test::TestBody()':
fib.cpp:(.text+0x0): multiple definition of `testFib_firstTest_Test::TestBody()'
/tmp/ccq6EExi.o:main.cpp:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
我得到了一個錯誤,我編輯了原報告 – TheGuyWithStreetCred 2014-10-08 09:23:49
@ user2202368我之前沒有發現它,編輯過。 – 2014-10-08 09:25:28
謝謝,我只是學習測試,它現在可以工作:) – TheGuyWithStreetCred 2014-10-08 09:27:37