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