日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gtest使用例子

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gtest使用例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近使用gtest進行單元測試,采用打樁的形式。關于gtest的詳細說明就不多說了,網上的資料一大堆。主要講解使用時的參數如何配置以及遇到的問題。下面的例子模擬是加、減、乘、除四則運算,前提是不知道加、減、乘、除四則運算是如何實現的。

編譯命令自己根據實際情況進行搭建

#include <iostream>
#include <vector>
#include "gtest/gtest.h"
#include "gmock/gmock.h"
#include <string>

using namespace testing;
using namespace std;
//using ::testing::Return;
//using ::testing::ByRef;

class Operator ? //要測試的接口分別是add() ??sub()?
{
public:
?? ?virtual int add(int x, int y) = 0;//加法
?? ?virtual int sub(int x, int y) = 0; ?//減法
?? ?virtual int multi(int x, int y) = 0; //乘法
?? ?virtual int divide(int x, int y) = 0;?//除法
};

?

class MockOperator : public Operator {
public:
?? ?MOCK_METHOD2(add, int(int x, int y)); ? //2代表add()有2個參數

int Operation::Add(Operator *op, int a, int b) {
?? ?return op->add(a, b);
}

int Operation::Sub(Operator *op, int a, int b) {
?? ?return op->sub(a, b);
}

int Operation::Multi(Operator *op, int a, int b) {
?? ?return op->multi(a, b);
}

int Operation::Divide(Operator *op, int a, int b) {
?? ?return op->divide(a, b);
}

TEST(OperatorTest, add) {
?? ?MockOperator mock;

?? ?int t = 13;

?? ?EXPECT_CALL(mock, add(6, 7)).WillRepeatedly(Return(t));

?? ?Operation op;
?? ?EXPECT_EQ(13, op.Add(&mock, 6, 7)); ?//13 與 Add的結果進行比較
}

TEST(OperatorTest, sub) {
?? ?MockOperator mock;

?? ?int t = -1;

?? ?EXPECT_CALL(mock, sub(6, 7)).WillRepeatedly(Return(t)); ?//設定返回值是t

?? ?Operation op;
?? ?EXPECT_EQ(-1, op.Sub(&mock, 6, 7)); ?//-1 與 Sub的結果進行比較
}

TEST(OperatorTest, multi) {
?? ?MockOperator mockoperator;

?? ?int t = 18;

?? ?EXPECT_CALL(mockoperator, multi(2, 9)).WillRepeatedly(Return(t)); //設定返回值為t

?? ?Operation op;
?? ?EXPECT_EQ(18, op.Multi(&mockoperator, 2, 9)); ?//18 與 Multi的結果進行比較
}

TEST(OperatorTest, divide) {
?? ?MockOperator mock;

?? ?int t = 3;

?? ?EXPECT_CALL(mock, divide(15, 5)).WillRepeatedly(Return(t)); //設定返回值為t

?? ?Operation op;
?? ?EXPECT_EQ(3, op.Divide(&mock, 15, 5)); ?//3 與 Divide()的結果進行比較
}

int main(int argc, char **argv) {
?? ?std::cout << "start gtest" << endl;
?? ?::testing::InitGoogleTest(&argc, argv);
?? ?return RUN_ALL_TESTS();
}
?

結果如下:

總結

以上是生活随笔為你收集整理的gtest使用例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。