mockcpp学习笔记

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);
}

测试结果

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
这个错误是由于找不到`Sophus/SE3.hpp`文件或目录引起的。`Sophus`是一个用于在C++中进行刚体运动估计的库,`SE3.hpp`是其中一个头文件。 要解决这个错误,你可以按照以下步骤进行操作: 1. 检查是否正确安装了`Sophus`库。确保你已经正确地安装了`Sophus`并设置了正确的库路径。你可以通过在终端中输入`sudo apt-get install libeigen3-dev`来安装Eigen3库,然后使用`git`下载`Sophus`: ``` git clone https://github.com/strasdat/Sophus.git ``` 进入`Sophus`文件夹,使用以下命令进行编译和安装: ``` mkdir build cd build cmake .. make sudo make install ``` 2. 确认你的代码中正确包含了`Sophus/SE3.hpp`头文件。在你的代码中,应该有类似以下的include语句: ```cpp #include <Sophus/SE3.hpp> ``` 确保该语句正确地引用了`Sophus/SE3.hpp`文件。如果你的代码中没有这个引用语句,添加上去。 3. 如果你的代码中已经正确包含了`Sophus/SE3.hpp`头文件,但仍然出现错误,请检查你的编译选项。在使用`g++`或其他编译器编译时,确保你正确地设置了库路径和链接选项。你可以使用`-I`选项来添加`Sophus`库的头文件路径,例如: ``` g++ -I /path/to/Sophus your_code.cpp -o your_executable ``` 其中`/path/to/Sophus`应该是`Sophus`库的路径。 希望这些步骤可以帮助你解决这个错误。如果问题仍然存在,请反馈更多的信息,以便我们能够提供更具体的帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值