1 mockcpp源文件下载
下载地址
http://code.google.com/p/mockcpp/downloads/list
GitHub - sinojelly/mockcpp: Two C/C++ testing tools, mockcpp and testngpp.
mockcpp: https://github.com/sinojelly/mockcpp
根据网络情况选择下载即可,建议选择后两个链接,官方的链接代码编译会报错,需要屏蔽代码
2 编译生成库文件
同步到Linux
新建build文件夹,并执行编译得到libmockcpp.a
hb@hb-virtual-machine:~/share/mockcpp$ ll -a
total 100
drwxrwxr-x 8 hb hb 4096 2月 25 21:45 ./
drwxrwx--- 11 hb hb 4096 2月 25 21:45 ../
drwxrwxr-x 4 hb hb 4096 2月 25 21:45 3rdparty/
-rw-rw-r-- 1 hb hb 2177 2月 25 21:43 build_install.ps1
-rw-rw-r-- 1 hb hb 1724 2月 25 21:43 build_install.sh
-rw-rw-r-- 1 hb hb 1946 2月 25 21:43 build.ps1
-rw-rw-r-- 1 hb hb 1708 2月 25 21:43 build.sh
-rw-rw-r-- 1 hb hb 890 2月 25 21:43 clean.bat
-rw-rw-r-- 1 hb hb 508 2月 25 21:43 CMakeLists.txt
-rw-rw-r-- 1 hb hb 9194 2月 25 21:43 COPYING
drwxrwxr-x 3 hb hb 4096 2月 25 21:45 docs/
-rw-rw-r-- 1 hb hb 447 2月 25 21:43 ExportLite.ps1
-rw-rw-r-- 1 hb hb 3920 2月 25 21:43 .gitignore
-rw-rw-r-- 1 hb hb 673 2月 25 21:43 HEADER
drwxrwxr-x 3 hb hb 4096 2月 25 21:45 include/
-rw-rw-r-- 1 hb hb 6916 2月 25 21:43 Makefile
-rw-rw-r-- 1 hb hb 221 2月 25 21:43 ProjectVar.txt
-rw-rw-r-- 1 hb hb 3492 2月 25 21:43 README.md
drwxrwxr-x 3 hb hb 4096 2月 25 21:45 src/
drwxrwxr-x 4 hb hb 4096 2月 25 21:45 tests/
-rw-rw-r-- 1 hb hb 1688 2月 25 21:43 TODO.md
drwxrwxr-x 2 hb hb 4096 2月 25 21:45 tools/
hb@hb-virtual-machine:~/share/mockcpp$ mkdir build
hb@hb-virtual-machine:~/share/mockcpp$ cd build
hb@hb-virtual-machine:~/share/mockcpp/build$ cmake ..
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Python3: /usr/bin/python3.10 (found version "3.10.7") found components: Interpreter
-- Configuring done
-- Generating done
-- Build files have been written to: /home/hb/share/mockcpp/build
hb@hb-virtual-machine:~/share/mockcpp/build$ make
[ 1%] Generating /home/hb/share/mockcpp/include/mockcpp/DelegatedMethodDef.h
[ 2%] Generating /home/hb/share/mockcpp/include/mockcpp/ArgumentsListDef.h
[ 3%] Generating /home/hb/share/mockcpp/include/mockcpp/MethodTypeTraitsDef.h
[ 3%] Built target arg_related_headers
[ 4%] Generating /home/hb/share/mockcpp/include/mockcpp/DelegatedMethodGetDef.h
[ 5%] Generating /home/hb/share/mockcpp/include/mockcpp/DelegatedMethodGetByVptrDef.h
[ 6%] Generating /home/hb/share/mockcpp/include/mockcpp/DestructorAddrGetterDef.h
[ 7%] Generating /home/hb/share/mockcpp/include/mockcpp/MethodIndiceCheckerDef.h
[ 8%] Generating /home/hb/share/mockcpp/include/mockcpp/DefaultMethodAddrGetterDef.h
[ 8%] Built target vtbl_related_headers
[ 10%] Building CXX object src/CMakeFiles/mockcpp.dir/AfterMatcher.cpp.o
[ 11%] Building CXX object src/CMakeFiles/mockcpp.dir/AnyBase.cpp.o
[ 12%] Building CXX object src/CMakeFiles/mockcpp.dir/AnyCast.cpp.o
[ 13%] Building CXX object src/CMakeFiles/mockcpp.dir/Any.cpp.o
[ 14%] Building CXX object src/CMakeFiles/mockcpp.dir/Asserter.cpp.o
[ 15%] Building CXX object src/CMakeFiles/mockcpp.dir/AssertionFailedError.cpp.o
[ 16%] Building CXX object src/CMakeFiles/mockcpp.dir/BeforeMatcher.cpp.o
[ 17%] Building CXX object src/CMakeFiles/mockcpp.dir/CallerMatcher.cpp.o
[ 18%] Building CXX object src/CMakeFiles/mockcpp.dir/ChainableMockMethodContainer.cpp.o
[ 20%] Building CXX object src/CMakeFiles/mockcpp.dir/ChainableMockMethodCore.cpp.o
[ 21%] Building CXX object src/CMakeFiles/mockcpp.dir/ChainableMockMethodIndexKey.cpp.o
[ 22%] Building CXX object src/CMakeFiles/mockcpp.dir/ChainableMockMethodNameKey.cpp.o
[ 23%] Building CXX object src/CMakeFiles/mockcpp.dir/ChainableMockObjectBase.cpp.o
[ 24%] Building CXX object src/CMakeFiles/mockcpp.dir/ChainableMockObject.cpp.o
[ 25%] Building CXX object src/CMakeFiles/mockcpp.dir/ChainingMockHelper.cpp.o
[ 26%] Building CXX object src/CMakeFiles/mockcpp.dir/ConstraintSet.cpp.o
[ 27%] Building CXX object src/CMakeFiles/mockcpp.dir/DecoratedConstraint.cpp.o
[ 28%] Building CXX object src/CMakeFiles/mockcpp.dir/DefaultMatcher.cpp.o
[ 30%] Building CXX object src/CMakeFiles/mockcpp.dir/DefaultStub.cpp.o
[ 31%] Building CXX object src/CMakeFiles/mockcpp.dir/DelegatedMethodGetter.cpp.o
[ 32%] Building CXX object src/CMakeFiles/mockcpp.dir/MethodIndiceChecker.cpp.o
[ 33%] Building CXX object src/CMakeFiles/mockcpp.dir/DieStub.cpp.o
[ 34%] Building CXX object src/CMakeFiles/mockcpp.dir/Exception.cpp.o
[ 35%] Building CXX object src/CMakeFiles/mockcpp.dir/ExpectsMatcher.cpp.o
[ 36%] Building CXX object src/CMakeFiles/mockcpp.dir/Formatter.cpp.o
[ 37%] Building CXX object src/CMakeFiles/mockcpp.dir/IdentityBuilder.cpp.o
[ 38%] Building CXX object src/CMakeFiles/mockcpp.dir/IgnoreResultHandler.cpp.o
[ 40%] Building CXX object src/CMakeFiles/mockcpp.dir/IgnoreResultHandlerFactory.cpp.o
[ 41%] Building CXX object src/CMakeFiles/mockcpp.dir/IgnoreReturnStub.cpp.o
[ 42%] Building CXX object src/CMakeFiles/mockcpp.dir/Ignore.cpp.o
[ 43%] Building CXX object src/CMakeFiles/mockcpp.dir/InterfaceInfo.cpp.o
[ 44%] Building CXX object src/CMakeFiles/mockcpp.dir/Invocation.cpp.o
[ 45%] Building CXX object src/CMakeFiles/mockcpp.dir/InvocationId.cpp.o
[ 46%] Building CXX object src/CMakeFiles/mockcpp.dir/InvocationMockBuilderGetter.cpp.o
[ 47%] Building CXX object src/CMakeFiles/mockcpp.dir/InvocationMocker.cpp.o
[ 48%] Building CXX object src/CMakeFiles/mockcpp.dir/InvocationMockerSet.cpp.o
[ 50%] Building CXX object src/CMakeFiles/mockcpp.dir/InvocationTimesMatcher.cpp.o
[ 51%] Building CXX object src/CMakeFiles/mockcpp.dir/InvokedAtLeast.cpp.o
[ 52%] Building CXX object src/CMakeFiles/mockcpp.dir/InvokedAtMost.cpp.o
[ 53%] Building CXX object src/CMakeFiles/mockcpp.dir/InvokedExactly.cpp.o
[ 54%] Building CXX object src/CMakeFiles/mockcpp.dir/InvokedOnce.cpp.o
[ 55%] Building CXX object src/CMakeFiles/mockcpp.dir/InvokedTimesMatcher.cpp.o
[ 56%] Building CXX object src/CMakeFiles/mockcpp.dir/IsAnythingHelper.cpp.o
[ 57%] Building CXX object src/CMakeFiles/mockcpp.dir/IsStringContains.cpp.o
[ 58%] Building CXX object src/CMakeFiles/mockcpp.dir/IsStringEndWith.cpp.o
[ 60%] Building CXX object src/CMakeFiles/mockcpp.dir/IsStringStartWith.cpp.o
[ 61%] Building CXX object src/CMakeFiles/mockcpp.dir/MismatchResultHandler.cpp.o
[ 62%] Building CXX object src/CMakeFiles/mockcpp.dir/MismatchResultHandlerFactory.cpp.o
[ 63%] Building CXX object src/CMakeFiles/mockcpp.dir/MockObjectBase.cpp.o
[ 64%] Building CXX object src/CMakeFiles/mockcpp.dir/NormalResultHandler.cpp.o
[ 65%] Building CXX object src/CMakeFiles/mockcpp.dir/NormalResultHandlerFactory.cpp.o
[ 66%] Building CXX object src/CMakeFiles/mockcpp.dir/OutBoundPointer.cpp.o
[ 67%] Building CXX object src/CMakeFiles/mockcpp.dir/PendingMatcher.cpp.o
[ 68%] Building CXX object src/CMakeFiles/mockcpp.dir/ProcStub.cpp.o
[ 70%] Building CXX object src/CMakeFiles/mockcpp.dir/RefAny.cpp.o
[ 71%] Building CXX object src/CMakeFiles/mockcpp.dir/RepeatStub.cpp.o
[ 72%] Building CXX object src/CMakeFiles/mockcpp.dir/Result.cpp.o
[ 73%] Building CXX object src/CMakeFiles/mockcpp.dir/ReturnObjectList.cpp.o
[ 74%] Building CXX object src/CMakeFiles/mockcpp.dir/ReturnStub.cpp.o
[ 75%] Building CXX object src/CMakeFiles/mockcpp.dir/SimpleInvocationRecorder.cpp.o
[ 76%] Building CXX object src/CMakeFiles/mockcpp.dir/StringConstraint.cpp.o
[ 77%] Building CXX object src/CMakeFiles/mockcpp.dir/StubContainer.cpp.o
[ 78%] Building CXX object src/CMakeFiles/mockcpp.dir/StubsMatcher.cpp.o
[ 80%] Building CXX object src/CMakeFiles/mockcpp.dir/TestFailureMatcher.cpp.o
[ 81%] Building CXX object src/CMakeFiles/mockcpp.dir/ThenStub.cpp.o
[ 82%] Building CXX object src/CMakeFiles/mockcpp.dir/TypelessConstraintAdapter.cpp.o
[ 83%] Building CXX object src/CMakeFiles/mockcpp.dir/TypelessStubAdapter.cpp.o
[ 84%] Building CXX object src/CMakeFiles/mockcpp.dir/TypeString.cpp.o
[ 85%] Building CXX object src/CMakeFiles/mockcpp.dir/VirtualTable.cpp.o
[ 86%] Building CXX object src/CMakeFiles/mockcpp.dir/VirtualTableUtils.cpp.o
[ 87%] Building CXX object src/CMakeFiles/mockcpp.dir/VoidResultHandler.cpp.o
[ 88%] Building CXX object src/CMakeFiles/mockcpp.dir/VoidResultHandlerFactory.cpp.o
[ 90%] Building CXX object src/CMakeFiles/mockcpp.dir/WillStub.cpp.o
[ 91%] Building CXX object src/CMakeFiles/mockcpp.dir/HookMockObject.cpp.o
[ 92%] Building CXX object src/CMakeFiles/mockcpp.dir/ApiHookKey.cpp.o
[ 93%] Building CXX object src/CMakeFiles/mockcpp.dir/GlobalMockObject.cpp.o
[ 94%] Building CXX object src/CMakeFiles/mockcpp.dir/JmpOnlyApiHook.cpp.o
[ 95%] Building CXX object src/CMakeFiles/mockcpp.dir/JmpCode.cpp.o
[ 96%] Building CXX object src/CMakeFiles/mockcpp.dir/ApiHook.cpp.o
[ 97%] Building CXX object src/CMakeFiles/mockcpp.dir/ports/failure/stdexcept_report_failure.cpp.o
[ 98%] Building CXX object src/CMakeFiles/mockcpp.dir/UnixCodeModifier.cpp.o
[100%] Linking CXX static library libmockcpp.a
[100%] Built target mockcpp
3 拷贝到C工程中使用
拷贝库文件和头文件到C工程中
4 mockcpp简单使用
修改CMake文件
更改单元测试文件
#include <iostream>
#include <gtest/gtest.h>
#include <mockcpp/mockcpp.hpp>
#include "mymath.h"
using namespace std;
#ifdef __cplusplus
extern "C" {
#endif
// extern float MyMax(float a, float b);
// extern float MyMin(float a, float b);
#ifdef __cplusplus
}
#endif
class MathFunction : public testing::Test{
public:
virtual void SetUp()
{
printf("Test start \n");
}
virtual void TearDown()
{
printf("Test end \n");
}
};
TEST_F(MathFunction, Max1)
{
// Arrange
float res = 0;
// Act
res = MyMax(1.0f, 2.0f);
// Assert
EXPECT_EQ(res, 2.0f);
}
// ....
TEST_F(MathFunction, Min3)
{
// Arrange
float res = 0;
MOCKER(MyMin).stubs().will(returnValue(2.0f));
// Act
res = MyMin(1.0f, 1.0f);
// Assert
EXPECT_EQ(res, 1.0f);
}
测试结果