使用Automake进行单元测试

维森特·波利亚(Vicente Bolea)

我正在使用GNU自动工具与团队中的其他人一起进行项目。在项目中,我们对每个不重要的C ++类使用单元测试。我发现有对单元测试的支持。为此,我使用这种结构:

 ./
   + tests/
     + Makefile.am
     + classA_test.cc
     ....
     + classB_test.cc
   + src/
   + lib/
   + Makefile.am 

问题出在我主Makefile.am使用subdir-objects选项的情况下-请注意,我没有对源文件使用递归makefile-无法将我的变量(例如AM_CPPFLAGS)导出到另一个Makefile。到目前为止,我使用以下方法使其有效:

  $ make check      

但是当我这样做时,我总是遇到路径和选项的问题

  $ make distcheck

所以我的问题是,处理单元测试的标准方法是什么?

编辑:

只要我从tests / Makefile.am中删除子目录对象,就可以使它起作用。现在它会发出一些警告,但会编译。仍然似乎不是处理单元测试的适当方法

维森特·波利亚(Vicente Bolea)

经过一些研究,我想出了处理单元测试和Automake的适当方法:

遵循先前的方案:

./
+ tests/
  + Makefile.am
  + classA_test.cc
  ....
  + classB_test.cc
+ src/
+ lib/
+ Makefile.am

根目录中的makefile.am将是主目录,此目录将调用tests目录中的makefile

$ cat Makefile.am
SUBDIRS = . tests   # (Super Important) note the "." before tests,  
                    # it means it will be executed first
....

$ cat test/Makefile.am
AM_CXXFLAGS = ...
AM_LDFLAGS  = -L @top_srcdir@/lib #If needed
LDADD       = -llibraryfortests   #If needed

TESTS = test1 .. testN
test1_SOURCES = test1.cc ../src/somewhere/classtotest.cc
testN_SOURCES = ...

$ cat configure.ac
AM_INIT_AUTOMAKE([subdir-objects])
AC_CONFIG_FILES([Makefile])                                                                                                                                                                   
AC_CONFIG_FILES([tests/Makefile])
... 

现在,如果您想运行测试

$ sh ../pathto/configure 
$ make check 

以及dist [check]应该也可以

$ make distcheck
...
make[3]: Entering directory `/home/vicente/test/tests'
PASS: settings
============================================================================
Testsuite summary for Pepinos 00.13.15
============================================================================
# TOTAL: 1
# PASS:  1
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
make[3]: Leaving directory `/home/vicente/test/tests'
...

那么要回答另一个问题?

问:我不能将变量(例如AM_CPPFLAGS)导出到另一个Makefile

答:是的,但是我总是可以在configure.ac和AC_SUBT中声明一个变量,以使其对其他Makefile.am可见。

资料来源:https : //stackoverflow.com/a/29255889/2420872

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用实体框架进行单元测试的单元测试

来自分类Dev

使用Google测试进行单元测试

来自分类Dev

automake:自动运行单元测试

来自分类Dev

对使用RTOS的项目进行单元测试

来自分类Dev

使用Shim for ZipFile进行单元测试

来自分类Dev

使用NSURLSession进行单元测试

来自分类Dev

使用ReSharper进行AngularJS单元测试

来自分类Dev

使用ReSharper进行AngularJS单元测试

来自分类Dev

使用StaticLoggerBinder对类进行单元测试

来自分类Dev

Django使用ForeignKey进行单元测试

来自分类Dev

使用PostSharp进行正确的单元测试

来自分类Dev

使用RouteAttribute对ApiController进行单元测试

来自分类Dev

使用Jasmine进行单元测试$ modal

来自分类Dev

使用sinon框架进行单元测试

来自分类Dev

使用Microsoft EntityFramework进行单元测试

来自分类Dev

使用MockServletContext进行单元测试

来自分类Dev

使用Azure DocumentDB进行单元测试

来自分类Dev

使用Firebase进行单元测试

来自分类Dev

使用Mockito进行单元测试LazyLogging

来自分类Dev

使用boost :: multiprecision进行单元测试

来自分类Dev

使用Mockito对POJO进行单元测试

来自分类Dev

使用ReSharper进行AngularJS单元测试

来自分类Dev

对使用$ resource的服务进行单元测试

来自分类Dev

使用sinon框架进行单元测试

来自分类Dev

使用Moq进行单元测试

来自分类Dev

使用 MockEndPointsandSkip 进行 Camel 单元测试

来自分类Dev

使用 Moq 框架进行单元测试

来自分类Dev

使用 createSpyObj 对 observable 进行单元测试

来自分类Dev

在单元测试中使用passThrough进行角度测试