如何编译和链接unit testing?

如何编译和链接unit testing?,第1张

概述如何编译链接unit testing?

我最近开始尝试在我的一个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?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存