0
点赞
收藏
分享

微信扫一扫

【昇腾产品应用】英码科技EA500I基于昇腾Mind SDK实现实时人体关键点检测

科牛 2024-04-20 阅读 7
单元测试

googletest进行单元测试

使用Google test进行测试

使用场景:

安装方式:

vcpkg(c++包管理器)相关介绍,使用很简单:vcpkg 在clion和vs中的使用

以下是基于clion和vcpkg使用(vs好像继承了google test):

这里就不介绍怎么安装了,不会在clion中使用vcpkg安装gtest的可以看一看前面的文章,很快就能看完

一、单元测试

cmake_minimum_required(VERSION 3.28)
# vcpkg经典模式下建议手动添加这个,不然可能会报错找不到路径,别折腾了
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake"
        CACHE STRING "Vcpkg toolchain file")

project(test)

set(CMAKE_CXX_STANDARD 17)
find_package(GTest CONFIG REQUIRED)

add_executable(test main.cpp)

target_link_libraries(test PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main)
//使用google test进行单元测试
#include <gtest/gtest.h>
#include <iostream>

int add(int a, int b)
{
	return a + b;
}

TEST(testCase1,should_3_when_1_add_2)
{
	EXPECT_EQ(3, add(1, 2));
}

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

在这里插入图片描述

在这里插入图片描述

二、使用gmock测试

//User类定义
#ifndef USER_H
#define USER_H
#include <iostream>
class User{
public:
  virtual std::string get_name() = 0;
};

#endif
//MockUser类定义
#ifndef MOCKUSER_H
#define MOCKUSER_H

#include "User.h"
#include <gmock/gmock.h>
class MockUser: public User{
public:
  MOCK_METHOD(std::string, get_name, (), (override));
};

#endif
//使用google test进行单元测试
#include <gtest/gtest.h>
#include <iostream>
#include "MockUser.h"
int add(int a, int b) {
	return a + b;
}

TEST(testCase1, should_3_when_1_add_2) {
	EXPECT_EQ(3, add(1, 2));
}

TEST(testCase2, test) {
	MockUser user;
	EXPECT_CALL(user, get_name()).Times(testing::AtLeast(3)).
	WillOnce(testing::Return("one")).
	WillOnce(testing::Return("two")).
	WillRepeatedly(testing::Return("other"));

	std::cout << user.get_name() << std::endl;
	std::cout << user.get_name() << std::endl;
	std::cout << user.get_name() << std::endl;
	std::cout << user.get_name() << std::endl;
	std::cout << user.get_name() << std::endl;
	std::cout << user.get_name() << std::endl;
}

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

测试结果:

在这里插入图片描述

举报

相关推荐

0 条评论