当前位置:  开发笔记 > 编程语言 > 正文

如何使用GNU autotools为"make check"创建测试

如何解决《如何使用GNUautotools为"makecheck"创建测试》经验,为你挑选了2个好方法。

我正在使用GNU autotools来构建特定项目的构建系统.我想开始为验证编写自动化测试.我想输入"make check"让它自动运行这些.我的项目是用C++编写的,虽然我仍然对为其他语言编写自动化测试感到好奇.

这几乎与每个单元测试框架兼容(我在考虑使用cppunit)吗?如何将这些单元测试框架挂钩到make check中?我是否可以确保不需要安装单元测试软件来配置和构建项目的其余部分?



1> jonner..:

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

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

TESTS=my-test-executable

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

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

他们都会跑.



2> Dongho Yoo..:

我正在使用Check 0.9.10

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

    ./configure.ac

    PKG_CHECK_MODULES([CHECK],[check> = 0.9.10])

    ./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@
    

    并编写测试代码, ./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
    

使用检查可以使用超时和提升信号.这非常有帮助.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有