Google Test 自带一些小功能

控制台彩色打印

TEST(test, colored_print)
{
	using namespace testing::internal;
	std::map<GTestColor, std::string> ColorMap = 
	{
		{COLOR_RED, "红色"},
		{COLOR_GREEN, "绿色"},
		{COLOR_YELLOW, "黄色"}
	};

	for (auto color:ColorMap)
	{
		ColoredPrintf(color.first, "这是%s\n", color.second);
	}
}

image

Log日志打印

TEST(test, gtest_log)
{
	GTEST_LOG_(INFO)    << "打印 INFO 级别信息";
	GTEST_LOG_(WARNING) << "打印 WARNING 级别信息";
	GTEST_LOG_(ERROR)   << "打印 ERROR 级别信息";
	GTEST_LOG_(FATAL)   << "打印 FATAL 级别信息(FATAL直接退出程序)";
}

GTEST_LOG_(FATAL) 这一行设置断点,可以可看到:

image

按下 F10 后,打印 FATAL 信息并退出程序。

标准输出流&标准错误输出流重定向

TEST(test, redirect_std_stderr)
{
	/*
	关于std::cout 和 std::cerr的用法 :https://www.python100.com/html/4DPP58DQW140.html
	*/
	using namespace testing::internal;
	CaptureStdout();
	for (int i = 0; i < 5; i++)
	{
		std::cout << "标准输出流测试文字" << i << std::endl;
	}

	std::string stdOutput = GetCapturedStdout();
	std::cout << "重定向内容如下:\n" << stdOutput << std::endl;

	std::cout << "\n再次打印标准输出流测试文字" << std::endl;

	std::cout << "------------------------------------" << std::endl;

	CaptureStderr();
	std::cout << "标准输出流测试文字" << std::endl;

	std::cerr << "标准错误输出流测试文字"<< std::endl;
	std::string stdErrOutput = GetCapturedStderr();
	std::cout << "\n重定向内容如下:\n" << stdErrOutput << std::endl;

	std::cerr << "\n再次打印标准错误输出流测试文字" << std::endl;
}

image

参考资料

posted @ 2023-09-20 23:36  GShang  阅读(1248)  评论(0编辑  收藏  举报