具有多个测试套件的自动化(编码/部署)

时间:2011-06-20 12:18:35

标签: automake

我正在使用Automake进行一个项目,除了典型的单元测试之外,该项目开始具有更长时间运行的集成/部署样式测试。问题是在正常编程期间,不需要运行较长的测试,只需要较短的单元测试集。但是,最终的合并和/或存储库构建必须运行完整的测试套件。

有没有一种标准的方法来处理这个与automake?理想情况下,我希望只有两个目标,即运行所有内容的正常check目标,以及运行简化测试的check-lite目标。

该项目分布在多个子项目和目录中,因此标准的自动化方法非常适合确保一致性。

2 个答案:

答案 0 :(得分:1)

我建议在--enable-extended-tests脚本中添加configure选项:

AC_MSG_CHECKING([whether to run extended tests])
AC_ARG_ENABLE([extended-tests],
  [AS_HELP_STRING([--enable-extended-tests], [run full integration tests])],
  [enable_extended_tests="yes"], [enable_extended_tests="no"])
AC_MSG_RESULT([$enable_extended_tests])

AM_CONDITIONAL([EXTENDED_TESTS], [test "X$enable_extended_tests" != "Xno"])

然后您可以在Makefile.am中使用Automake条件:

if EXTENDED_TESTS
EXTRA_TESTS = extra_test1 extra_test2 ...
else
EXTRA_TESTS =
endif

TESTS = $(EXTRA_TESTS) normal_test1 normal_test2 ...

答案 1 :(得分:0)

如果您已根据测试类型将测试套件拆分为单独的目录,则可以向顶级Makefile.am添加一些其他目标以执行部分​​测试套件运行。

例如,如果您的树被组织为:

$(srcdir)
  - tests
     - unit
     - integration

您可以将以下内容添加到makefile中:

check-unit:
    $(MAKE) $(AM_MAKEFLAGS) -C tests/unit check

check-integration:
    $(MAKE) $(AM_MAKEFLAGS) -C tests/integration check

现在当你运行make check-unit时,它只会运行你的单元测试。运行make check-integration将运行另一半测试。标准make check目标将继续运行整个套件。

如果您无法在单个目录下组织所有测试,则可以向目标添加其他$(MAKE)次调用。它确实需要一些顶层项目结构的知识,但是没有一种明确的方法可以从子目录中的Makefile.am文件中传递所需的信息。