精华内容
下载资源
问答
  • cmocka cmocka is an elegant unit testing framework for C with support for mock objects. It only requires the standard C library, works on a range of computing platforms (including embedded) and with ...
  • automake-cmocka-example 使用 Autotools 和 cmocka 的测试驱动 C 的简单指南
  • cmocka源码编译安装

    千次阅读 2019-01-01 21:13:46
    cmocka源码编译安装 cmocka install and build(for ccn-lite on Ubuntu Mate) 1、cmocka是google开源的单元测试框架 官网网址:https://cmocka.org/ 2、下载源码,如:cmocka-1.1.1.tar.xz 官网网址:...

    cmocka源码编译安装
    cmocka install and build(for ccn-lite on Ubuntu Mate)

    1、cmocka是google开源的单元测试框架
    官网网址:https://cmocka.org/

    2、下载源码,如:cmocka-1.1.1.tar.xz
    官网网址:https://cmocka.org/files/

    3、解压
    QIANZI-BASE:/home # xz -d cmocka-1.1.1.tar.xz
    QIANZI-BASE:/home # tar -xvf cmocka-1.1.1.tar

    4、编译安装
    QIANZI-BASE:/home # cd cmocka-1.1.1
    QIANZI-BASE:/home/cmocka-1.1.1 # mkdir build
    QIANZI-BASE:/home/cmocka-1.1.1 # cd build
    QIANZI-BASE:/home/cmocka-1.1.1/build # cmake ..
    QIANZI-BASE:/home/cmocka-1.1.1/build # make
    QIANZI-BASE:/home/cmocka-1.1.1/build # sudo make install
    QIANZI-BASE:/home/cmocka-1.1.1/build # ldconfig

    展开全文
  • 用于cmocka单元测试框架的链接器集包装器 包装程序通过使用链接器集(又称为带有函数指针的链接器节)来简化cmocka的使用。 使魔术发生的链接器集头是与Chrome项目相关的随机分支。 有关如何轻松添加cmocka测试的...
  • cmocka编译安装

    千次阅读 2017-04-08 11:50:11
    1.cmocka简介: 官网:https://cmocka.org/ cmocka是google开源的单元测试框架。 2.编译安装 2.1下载源码 https://cmocka.org/files/ 如:cmocka-1.1.0.tar.xz 2.2解压 xz -d cmocka-1.1.0.tar.xz tar -xvf ...

    1.cmocka简介:

    官网:https://cmocka.org/


    cmocka是google开源的单元测试框架。

    2.编译安装

    2.1下载源码

    https://cmocka.org/files/

    如:cmocka-1.1.0.tar.xz

    2.2解压

    xz -d cmocka-1.1.0.tar.xz

    tar -xvf cmocka-1.1.0.tar

    2.3编译安装

    cd cmocka-1.1.0

    mkdir build

    cd build

    ccmake /path/to/cmocka-1.1.0    //cmocka的目录

    cmake /path/to/cmocka-1.1.0

    make

    make install

    2.4默认库所在位置


    2.5在/usr/lib中创建cmocka库的链接

    ln -s /usr/local/lib/libcmocka.so* /usr/lib/


    2.6运行一下ldconfig

    ldconfig



    展开全文
  • cmocka的学习(2)

    2020-08-11 00:04:10
    cmocka的学习(2)-配置头文件config.h生成脚本 目录cmocka的学习(2)-配置头文件config.h生成脚本重点函数说明check_include_file(file.ext VAR)check_function_exists(calloc HAVE_CALLOC)check_symbol_exists...

    cmocka的学习(2)-配置头文件config.h生成脚本

    重点函数说明

    1. check_include_file(file.h VAR)
    2. check_function_exists(calloc HAVE_CALLOC)
    3. check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF)

    check_include_file(file.ext VAR)

    这个函数可以检测某个文件是否存在。存在是会设置VAR变量。使用这个函数需要先用project函数,设置project使用的语言。

    check_function_exists(calloc HAVE_CALLOC)

    这个函数用于检测特定的函数是否存在。如果存在设置变量 HAVE_CALLOC。

    check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF)

    这个函数检测文件stdio.h中是否定义了符号snprintf。如果定义了,设置变量HAVE_SNPRINTF。

    cmocka源码

    cmake以下是cmocka中ConfigureChecks.cmake文件的源码

    include(CheckIncludeFile)
    include(CheckSymbolExists)
    include(CheckFunctionExists)
    include(CheckLibraryExists)
    include(CheckTypeSize)
    include(CheckCXXSourceCompiles)
    include(CheckStructHasMember)
    include(TestBigEndian)
    
    set(PACKAGE ${PROJECT_NAME})
    set(VERSION ${PROJECT_VERSION})
    set(DATADIR ${DATA_INSTALL_DIR})
    set(LIBDIR ${CMAKE_INSTALL_LIBDIR})
    set(PLUGINDIR "${PLUGIN_INSTALL_DIR}-${LIBRARY_SOVERSION}")
    set(SYSCONFDIR ${SYSCONF_INSTALL_DIR})
    
    set(BINARYDIR ${CMAKE_BINARY_DIR})
    set(SOURCEDIR ${CMAKE_SOURCE_DIR})
    
    function(COMPILER_DUMPVERSION _OUTPUT_VERSION)
        # Remove whitespaces from the argument.
        # This is needed for CC="ccache gcc" cmake ..
        string(REPLACE " " "" _C_COMPILER_ARG "${CMAKE_C_COMPILER_ARG1}")
    
        execute_process(
            COMMAND
                ${CMAKE_C_COMPILER} ${_C_COMPILER_ARG} -dumpversion
            OUTPUT_VARIABLE _COMPILER_VERSION
        )
    
        string(REGEX REPLACE "([0-9])\\.([0-9])(\\.[0-9])?" "\\1\\2"
            _COMPILER_VERSION ${_COMPILER_VERSION})
    
        set(${_OUTPUT_VERSION} ${_COMPILER_VERSION} PARENT_SCOPE)
    endfunction()
    
    if(CMAKE_COMPILER_IS_GNUCC AND NOT MINGW)
        compiler_dumpversion(GNUCC_VERSION)
        if (NOT GNUCC_VERSION EQUAL 34)
            check_c_compiler_flag("-fvisibility=hidden" WITH_VISIBILITY_HIDDEN)
        endif (NOT GNUCC_VERSION EQUAL 34)
    endif(CMAKE_COMPILER_IS_GNUCC AND NOT MINGW)
    
    # DEFINITIONS
    if (SOLARIS)
        add_definitions(-D__EXTENSIONS__)
    endif (SOLARIS)
    
    # HEADER FILES
    check_include_file(assert.h HAVE_ASSERT_H)
    check_include_file(inttypes.h HAVE_INTTYPES_H)
    check_include_file(io.h HAVE_IO_H)
    check_include_file(malloc.h HAVE_MALLOC_H)
    check_include_file(memory.h HAVE_MEMORY_H)
    check_include_file(setjmp.h HAVE_SETJMP_H)
    check_include_file(signal.h HAVE_SIGNAL_H)
    check_include_file(stdarg.h HAVE_STDARG_H)
    check_include_file(stddef.h HAVE_STDDEF_H)
    check_include_file(stdint.h HAVE_STDINT_H)
    check_include_file(stdio.h HAVE_STDIO_H)
    check_include_file(stdlib.h HAVE_STDLIB_H)
    check_include_file(string.h HAVE_STRING_H)
    check_include_file(strings.h HAVE_STRINGS_H)
    check_include_file(sys/stat.h HAVE_SYS_STAT_H)
    check_include_file(sys/types.h HAVE_SYS_TYPES_H)
    check_include_file(time.h HAVE_TIME_H)
    check_include_file(unistd.h HAVE_UNISTD_H)
    
    if (HAVE_TIME_H)
        check_struct_has_member("struct timespec" tv_sec "time.h" HAVE_STRUCT_TIMESPEC)
    endif (HAVE_TIME_H)
    
    # FUNCTIONS
    check_function_exists(calloc HAVE_CALLOC)
    check_function_exists(exit HAVE_EXIT)
    check_function_exists(fprintf HAVE_FPRINTF)
    check_function_exists(free HAVE_FREE)
    check_function_exists(longjmp HAVE_LONGJMP)
    check_function_exists(siglongjmp HAVE_SIGLONGJMP)
    check_function_exists(malloc HAVE_MALLOC)
    check_function_exists(memcpy HAVE_MEMCPY)
    check_function_exists(memset HAVE_MEMSET)
    check_function_exists(printf HAVE_PRINTF)
    check_function_exists(setjmp HAVE_SETJMP)
    check_function_exists(signal HAVE_SIGNAL)
    check_function_exists(strsignal HAVE_STRSIGNAL)
    check_function_exists(strcmp HAVE_STRCMP)
    check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
    
    if (WIN32)
        check_function_exists(_vsnprintf_s HAVE__VSNPRINTF_S)
        check_function_exists(_vsnprintf HAVE__VSNPRINTF)
        check_function_exists(_snprintf HAVE__SNPRINTF)
        check_function_exists(_snprintf_s HAVE__SNPRINTF_S)
        check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF)
        check_symbol_exists(vsnprintf stdio.h HAVE_VSNPRINTF)
    else (WIN32)
        check_function_exists(sprintf HAVE_SNPRINTF)
        check_function_exists(vsnprintf HAVE_VSNPRINTF)
    endif (WIN32)
    
    find_library(RT_LIBRARY rt)
    if (RT_LIBRARY AND NOT LINUX AND NOT ANDROID)
        set(CMOCKA_REQUIRED_LIBRARIES ${RT_LIBRARY} CACHE INTERNAL "cmocka required system libraries")
    endif ()
    
    # OPTIONS
    check_c_source_compiles("
    __thread int tls;
    
    int main(void) {
        return 0;
    }" HAVE_GCC_THREAD_LOCAL_STORAGE)
    
    if (WIN32)
    check_c_source_compiles("
    __declspec(thread) int tls;
    
    int main(void) {
        return 0;
    }" HAVE_MSVC_THREAD_LOCAL_STORAGE)
    endif(WIN32)
    
    if (HAVE_TIME_H AND HAVE_STRUCT_TIMESPEC AND HAVE_CLOCK_GETTIME)
        if (RT_LIBRARY)
            set(CMAKE_REQUIRED_LIBRARIES ${RT_LIBRARY})
        endif()
    
        check_c_source_compiles("
    #include <time.h>
    
    int main(void) {
        struct timespec ts;
    
        clock_gettime(CLOCK_REALTIME, &ts);
    
        return 0;
    }" HAVE_CLOCK_REALTIME)
    
        # reset cmake requirements
        set(CMAKE_REQUIRED_INCLUDES)
        set(CMAKE_REQUIRED_LIBRARIES)
    endif ()
    
    # ENDIAN
    if (NOT WIN32)
        set(WORDS_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
        test_big_endian(WORDS_BIGENDIAN)
    endif (NOT WIN32)
    
    展开全文
  • cmocka的学习(1)

    2020-08-07 22:41:25
    使用clang编译cmocka,并执行其测试程序

    cmocka

    cmocka介绍


    cmocka 是一个优雅的C语言单元测试框架,它支持对象的mock。只依赖于标准C库。
    可以支持不同的计算机平台和不同的编译器。

    cmocka的官网

    学习任务

    • 在PC上实现样例测试
    • 在Cortex-M系列MCU中运行

    这两个任务主要有两个学习目标

    • 熟悉cmocka中cmake的配置与编写(阅读/理解cmake源码)
    • 熟悉如何使用cmocka编写PC端的模拟测试和MCU实际平台测试(重点)

    实践(1)

    接下来在Windows 10 的环境下编译和初步测试cmocka。这里需要提前做的准备有:

    • 安装visual studio 2019,可以选择社区版
    • 安装LLVM(clang)的windows版本,LLVM会依赖于visual studio
    • 安装cmake
    • 安装ninja

    下载并解压最新版cmocka的源码包

    解压后的目录如下:
    cmocka源码目录
    在该目录下新建一个build目录,并在build目录下打开命令行。
    在这里插入图片描述
    使用下面几条命令分别测试cmakeclangninja是否成功安装

    cmake --version
    

    如果可以正常输出版本号,表示cmake安装成功。截图如下:
    在这里插入图片描述

    clang --version
    

    在这里插入图片描述

    ninja --version
    

    在这里插入图片描述

    如果上面上个软件都正常安装,接下来可以编译cmocka库和它的一些测试程序了。

    首先使用

    cmake -G"Ninja" ..\
    

    生成ninja的构建文件,命令执行情况如下(部分截图):
    在这里插入图片描述
    接下来使用命令

    ninja -j8
    

    来编译cmocka的库和测试的可执行文件,执行结果截图如下:
    在这里插入图片描述
    其中比较多的警告,这里先不管。

    然后使用下面的命令来将cmocka生成的库文件安装到指定的目录(这里先不解释具体安装到了那个目录)

    ninja install
    

    在这里插入图片描述
    然后执行测试程序

    ninja test
    

    在这里插入图片描述

    这样在PC上的一些编译工作就做完了。

    这个过程还是比较简单的。但是过程中我还存在一些疑惑,在接下来的学习中需要解决。疑惑有:

    疑惑(接下来需要学习的内容)

    • cmake生成了一个 config.h 文件,生成这个文件的cmake文件是如何编写的?如果更换到其它编译器这个文件会配置成什么样子?
    • 如何将编译器设置为交叉编译器?如MDK的armcc、armclang或者GNU的arm-none-eabi-gcc
    • 如何编写测试程序?测试程序如何加入到测试,然后执行ninja test就自动回执行响应的测试代码?
    • ninja install是否可以由于打包发布程序?如何修改cmake文件实现?
    展开全文
  • 1. 前言 本文内容涉及单元测试,需要读者具有单元测试的基础知识...CMocka 是一款支持mock对象、面向C语言的单元测试框架,CMocka 往往是编译成库的形式,供C单元测试程序链接调用。其前身是谷歌开发的 Cmockery,...
  • CMocka概述 官网: https://cmocka.org/ 源码: https://gitlab.com/cmocka/cmocka CMocka 是一款支持 mock 对象、面向C语言的单元测试框架,CMocka 往往是编译成库的形式,供C单元测试程序链接调用。其前身是谷歌...
  • cmocka.h> //Google自动化测试 static void test_1(void **state) { //code } static void test_2(void **state) { //code } int demo(void) { const struct CMUnitTest tests[] = { ...
  • cmocka install and build(for ccn-lite on Ubuntu Mate) The error: "fatal error: cmocka.h: No such file or directory compilation terminated." 1.cmocka简介: 官网:https://cmocka.org/ ...
  • No package 'cmocka' found

    2016-04-20 08:40:06
     在Ubuntu上安装TSS时出现如下报错, 需安装 libcmocka-dev的包,诸如...configure: error: Package requirements (cmocka) were not met: No package 'cmocka' found Consider adjusting the PKG_CONFIG_PATH e
  • 单元测试工具cmocka英文教程 教程网址: https://bysany.net/20160403/ 源码: https://gitlab.com/snippets/18679
  • (转载)C单元测试框架——cmocka

    千次阅读 2018-12-25 10:37:15
    C单元测试框架——cmocka  在自动化验证技术成熟之前,我们依旧需要测试,能否编写优秀的模块,体现的是能力,而为代码编写完善的测试用例,体现的则是习惯。虽然测试并不能说明什么问题,但目前我们并无任何备选...
  • -- Install configuration: "Debug" -- Installing: /usr/lib/pkgconfig/cmocka.pc -- Installing: /usr/lib/cmake/cmocka/cmocka-config.cmake -- Installing: /usr/lib/cmake/cmocka/cmocka-config-version.cmake...
  • Pre-condition: 1,C的编译器GCC 2,CMake Building 1, /build目录下执行: cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug .. make cmake有两个比较重要的options: - CMAKE_C_COMPILER: The path ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 160
精华内容 64
关键字:

cmocka