sinojelly / mockcpp

Two C/C++ testing tools, mockcpp and testngpp.
Apache License 2.0
67 stars 42 forks source link
catch2 gtest-support mockito test-driven-development testing-tools
    mockcpp --- A C/C++ Mock Framework
    -------------------------------------
    https://github.com/sinojelly/mockcpp
    https://gitee.com/sinojelly/mockcpp

mockcpp is a jmock-like generic C/C++ Mock Framework, which doesn't use complex template technique which will result in very heavy compiling overhead.

C/C++ test framework

This project provided two tools for C/C++ testing. Name Description Path
mockcpp C/C++ mock framework mockcpp
testngpp C/C++ test framework mockcpp/tests/3rdparty/testngpp

The sample project to use these tools is at :
https://gitee.com/sinojelly/testngpp-mockcpp-sample

You can use mockcpp with other C/C++ test framework, such as gtest, Catch2, CppUTest etc. The sample projects are at:
https://gitee.com/sinojelly/gtest-with-mockcpp
https://gitee.com/sinojelly/catch2-with-mockcpp

You can use mockcpp testngpp prebuilt libraries and header files, or use their source code.

If you use the prebuilt libraries, be sure they are built on the same os and compiler as the project that is being tested.

mockcpp features

OS Compiler Virtual method mock Global function mock Overloaded function mock
Linux GCC Yes Yes Yes
Win10 MinGW Yes Yes Yes
Win10 VS2019 Yes No Yes

testngpp features

OS Compiler Base function Memory leak check Run in Sandbox Parameterized test
Linux GCC Yes Yes Yes Yes
Win10 MinGW Yes No No Yes
Win10 VS2019 Yes Yes Yes Yes

Sample code

Testngpp parameterized test sample

FIXTURE(DataDrivenTest)
{
    DATA_PROVIDER( mydata, 3
        , DATA_GROUP(1, 2, 3) 
        , DATA_GROUP(77, 20, 97) 
        , DATA_GROUP(101, 503, 604));

    // @test(data="mydata")
    PTEST( (int a, int b, int c), this is a parameterized test)
    {
        ASSERT_EQ(c, add(a, b));
    }
};

Documents for user

New Build System Description(recommended for user and developers)
Mockcpp manual english
Mockcpp manual chinese
Mockcpp simple instruction (Chinese, recommended)
Testngpp simple instruction (Chinese, recommended)
Testngpp user manual (Chinese)

Documents for developer

Advanced Guide of Mockcpp
Mockcpp version history
Software Architecture (Chinese)
Mockcpp configure parameter
Mockcpp Build Guide (a bit old)
Mockcpp Install Guide (old)

Other documents for reference

Testngpp MSVC Installation (old)
Testngpp Introduction

Email to the current maintainers may be sent to darwin.yuan@gmail.com, sinojelly@163.com.