Mar*_*sch 7 automake unit-testing
我最近将构建系统转换为automake/autoconf.在我的项目中,我有一些单元测试,需要在运行它们的目录中输入一些输入数据文件.当我运行make distcheck并尝试VPATH构建时,这些测试失败,因为它们显然不是从输入文件所在的目录运行的.我想知道是否有一些快速解决方案.例如,我可以以某种方式告诉系统不要在make distcheck上运行这些测试(但仍然在make check上运行它们)?或者在运行测试之前cd到文件所在的目录?
小智 8
我有同样的问题,并使用类似威廉的解决方案.我的Makefile.am看起来像这样:
EXTRA_DIST = testdata/test1.dat
AM_CPPFLAGS = -DDATADIR=\"$(srcdir)/\"
Run Code Online (Sandbox Code Playgroud)
然后,在我的unittest中,我使用DATADIR定义:
string path = DATADIR "/testdata/test1.dat"
Run Code Online (Sandbox Code Playgroud)
这适用于make check和make distcheck.
典型的解决方案是编写测试,以便它们在源目录中查找数据文件.例如,您可以$srcdir在测试中引用,或转换test为test.in并引用@srcdir@.
如果您的测试都在源目录中,则可以通过在Makefile.am中设置TESTS_ENVIRONMENT来运行该目录中的所有测试:
TESTS_ENVIRONMENT = cd $(srcdir) &&
Run Code Online (Sandbox Code Playgroud)
如果您的某些测试是由configure创建的,那么这将失败,因此只能在build目录中生存,在这种情况下,您可以选择性地使用以下内容进行cd:
TESTS_ENVIRONMENT = { test $${tst} = mytest && cd $(srcdir); true; } &&
Run Code Online (Sandbox Code Playgroud)
试图像这样使用TESTS_ENVIRONMENT是最脆弱的,最好编写测试,以便它们在源目录中查找数据文件.
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |