我在Linux上工作- Ubuntu
我有个测试cpp文件位于tests文件夹中:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
#include "../src/myFunctions.h"
BOOST_AUTO_TEST_CASE(my_test_1){
myNamespace::someFunction("abc", 2);
}
myFunctionssrc中的h是这样定义的:
#pragma once
#include <string>
namespace myNamespace{
void someFunction(std::string a, int b);
}
myFunctionssrc中的cpp也是这样定义的:
#include "myFunctions.h"
namespace myNamespace{
void myFunction(std::string a, int b){
//does smth...
}
}
现在我也有主。cpp在同一个文件夹- src中:
#include "myFunctions.h"
int main(int argc, char** argv){
myNamespace::someFunction("a", 2);
return 0;
}
所以有两个文件夹src和tests。在测试中有测试。cpp和src中的这3个其他文件。现在当我运行main时。cpp一切正常。但当我运行测试。cpp在测试cd中时也是如此:
g++ test.cpp
我得到以下错误:对'myNamespace::someFunction(...
所以它不知道这个函数?为什么会这样
如果我做测试的话。cpp删除函数调用后,我做smth像:BOOST_CHECK(10 == 12);
然后它工作
可能:
有没有办法进行测试。cpp从myFunctions中的函数。cpp或main。cpp-基本上从文件test/test执行测试。cpp但是当我运行main的时候。使用myFunctions的cpp。cpp?
1条答案
按热度按时间vfwfrxfs1#
您在实现中将
someFunction
拼写为myFunction
。修复了最小工作CMake(download as zip)CMakeLists.txt
src/CMakeLists.txt
src/main.cpp
src/myFunctions.cpp
src/myFunctions.h
tests/CMakeLists.txt
tests/test.cpp
其运行: