我最近开始尝试在我的一个C ++项目中使用TDD。 在这方面,我很新,对于unit testing的编译和使用方式,我有一些非常基本的问题。 我正在使用linux上的Boost.Test库。
编译一个包含所有testing套件的单个大型testing程序对于所有的单元是否很常见? 将testing分成许多较小的独立testing程序如何?
如何处理链接(与make )? 每个testing程序对象都必须与来自我的源程序的目标文件相链接,该目标文件包含正在testing的任何目标文件。 有没有办法自动处理? 更具体地说,是否有写一个Makefile make自动确定哪些对象文件必须链接在一起来生成一个特定的unit testing程序?
更新 :我的代码是组织在许多.cpp / .h文件,目前是单片(没有库)。 unit testing位于一个单独的目录中,通常与我的源代码树中的.cpp文件以1:1的关系。
在VirtualBox中的Debian上调用socket()时发生错误97
OpenGL项目返回未定义的引用
使用asynchronous套接字处理多个客户端的服务器
如何在windows 10中从高级pipe理员上下文启动非高级pipe理员进程?
在login菜单上运行C#应用程序
更新2 :希望这会使我的问题不那么广泛,这里是我正在使用的Makefile的摘录:
$(TSTDIR)%.$(TEST): $(OBjdiR)%.$(TEST).$(OBJEXT) $(OBjdiR)%.$(OBJEXT) @mkdir -p $(@D) @$(CXX) -o $@ $^ $(TSTliBS) $(OBjdiR)%.$(OBJEXT): $(SRCDIR)%.$(SRCEXT) $(DEPDIR)%.$(DEPEXT) @mkdir -p $(@D) @$(CXX) $(CXXFLAGS) $(INCLUDES) -o $@ $<
$(TEST)只是我用来区分unit testing和其他文件的标记。 请注意,我目前将所有testing程序与具有相同名称的目标文件链接起来。 但是,如果还需要来自另一个目标文件的符号,则会中断。
更新3 :这是我在上面讨论的一个例子。
MyOtherClass.h:
class MyOtherClass { public: int Foo(); }
MyOtherClass.cpp:
#include "MyOtherClass.h" int MyOtherClass::Foo() { return 0; }
MyClass.h:
#include "MyOtherClass.h" class MyClass { public: int Foo(); private: MyOtherClass moc_; }
MyClass.cpp:
#include "MyClass.h" int MyClass::Foo() { return moc_.Foo(); }
TestMyClass.cpp会testingMyClass::Foo返回0.使用我当前的Makefile,这将不会编译,因为testing程序需要与MyClass.o和MyOtherClass.o链接。
如何处理在C中的linux控制台按键?
如何读取已经在StdUser级别下创build的HKEY_LOCAL_MACHINE Software MyApp项?
shell_notifyicon:试图引用一个不存在的标记,没有显示图标
使用| =而不是=的具体原因
如果我有一个不受 *** 作系统版本支持的API的Dllimport(C#.NET),会发生什么情况
我发现这个很好的答案是给了一个相关的问题。
通过使用静态或动态库来解决链接问题是可能的。 如果被测试的目标文件被编译成库,那么在链接单元测试程序时,它将从库中提取所需的任何依赖关系。
总结以上是内存溢出为你收集整理的如何编译和链接unit testing?全部内容,希望文章能够帮你解决如何编译和链接unit testing?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)