我使用的GNU autotools为建立系统在一个特定的项目。我想开始写作的自动化测试的verifcation.我只是想类型的"检查",有它自动运行的这些。我的项目是用C++,虽然我仍然感到好奇的编写自动化测试对于其它语言。

这是兼容的几乎每一单元的测试框架(我是思考的使用cppunit)?我怎么挂钩,这些单元的测试框架编检查?我可以确信,我不需要该单元的测试软件的安装能够配置和建立其余的项目?

有帮助吗?

解决方案

要在发出 make check 时进行测试运行,需要将它们添加到 TESTS 变量

假设您已经构建了运行单元测试的可执行文件,您只需将可执行文件的名称添加到TESTS变量中,如下所示:

TESTS=my-test-executable

然后,当您 make check 时,它应自动运行,如果可执行文件返回非零值,它将报告为测试失败。如果您有多个单元测试可执行文件,只需在 TESTS 变量中列出它们:

TESTS=my-first-test my-second-test my-third-test

他们都会跑。

其他提示

我在使用 检查0.9.10

    configure.ac
    Makefile.am
    src/Makefile.am
    src/foo.c
    tests/check_foo.c
    tests/Makefile.am
  1. ./configure.ac

    PKG_CHECK_MODULES([检查],[检查>=0.9.10])

  2. ./tests/Makefile.am 用于测试码

    TESTS = check_foo
    check_PROGRAMS = check_foo
    check_foo_SOURCES = check_foo.c $(top_builddir)/src/foo.h
    check_foo_CFLAGS = @CHECK_CFLAGS@
    
  3. 写测试码, ./tests/check_foo.c

    START_TEST (test_foo)
    {
        ck_assert( foo() == 0 );
        ck_assert_int_eq( foo(), 0);
    }
    END_TEST
    
    /// And there are some tcase_xxx codes to run this test
    

使用检查可以使用的超时和提出信号。这是非常有帮助的。

您似乎在第一段中提出两个问题。

第一个是关于向GNU autotools工具链添加测试 - 但是如果我正确理解你那些测试,则用于验证构建应用程序所需的环境(依赖库和工具)以及适应对环境的构建(平台特定的差异)。

第二个是关于单元测试你的C ++应用程序以及在哪里调用这些测试,你建议从autotools工具链这样做,大概来自configure脚本。这样做并不常见 - 在Makefile中放置一个'test'目标是执行测试套件的一种更传统的方式。使用autotools构建和安装应用程序的典型步骤(至少从用户的角度来看,而不是从开发人员的角度来看)是运行configure脚本,然后运行make,然后选择运行make test,最后进行make install。 / p>

对于第二个问题,不希望cppunit成为依赖项,为什么不将它与c ++应用程序一起分发呢?你能不能把你正在使用的档案格式(无论是tar.gz,tar.bz2还是.zip)和你的源代码放在一起。我过去曾使用过cppunit,并且对它很满意,使用了JUnit和其他xUnit样式框架。

您可以使用Automake的 TESTS 来运行使用 check_PROGRAMS 生成的程序,但这将假设您正在使用日志驱动程序和编译器来输出。仍然可以更容易地使用 check_PROGRAMS ,但是使用Makefile中的本地规则来调用测试套件:

check_PROGRAMS=testsuite

testsuite_SOURCES=...
testsuite_CFLAGS=...
testsuite_LDADD=...

check-local:
    ./testsuite
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top