![]() |
怕老婆的帽子 · 内联样式和模板 - WPF .NET ...· 1 年前 · |
![]() |
不敢表白的沙滩裤 · 嵌入式:ARM间接寻址、变址寻址与多寄存器寻 ...· 2 年前 · |
![]() |
健壮的李子 · mxgraph源码中的toolbar.js中 ...· 2 年前 · |
![]() |
讲道义的大海 · SonarQube集成Jacoco - 知乎· 2 年前 · |
![]() |
帅气的伏特加 · 在 Power BI ...· 2 年前 · |
我使用 谷歌C++测试框架 对代码进行单元测试。我使用 带C++单元测试模块的Eclipse 进行输出分析。
以前我使用过 CppUnit ,它有宏家族 消息 ,可以这样调用:
CPPUNIT_ASSERT_EQUAL_MESSAGE("message",EXPECTED_VALUE,ACTUAL_VALUE)
并允许发送自定义消息来测试输出。
有办法在google测试输出中包含一些自定义文本吗?
(最好是将消息包含到现有程序读取的数据中,以便使用google测试进行自动单元测试。)
gtest宏返回一个流,用于在测试失败时输出诊断消息。
EXPECT_TRUE(false) << "diagnostic message";
在当前版本的gtest中,没有办法干净地这样做。我查看了代码,如果测试失败,将显示唯一的文本输出(包装在gtest“Messages”中)。
但是,在某个时候,gtest开始对屏幕进行
printf
'ing,您可以利用上面的级别获得与平台无关的颜色。
这里有一个被黑的宏来做你想做的事。这使用了最普通的内部文本着色。当然,
internal::
名称空间应该会敲响警钟,但是它可以工作。
用法:
TEST(pa_acq,Foo)
// C style
PRINTF("Hello world \n");
// or C++ style
TEST_COUT << "Hello world" << std::endl;
}
输出:
代码:
namespace testing
namespace internal
enum GTestColor {
COLOR_DEFAULT,
COLOR_RED,
COLOR_GREEN,
COLOR_YELLOW
extern void ColoredPrintf(GTestColor color, const char* fmt, ...);
#define PRINTF(...) do { testing::internal::ColoredPrintf(testing::internal::COLOR_GREEN, "[ ] "); testing::internal::ColoredPrintf(testing::internal::COLOR_YELLOW, __VA_ARGS__); } while(0)
// C++ stream interface
class TestCout : public std::stringstream
public:
~TestCout()
PRINTF("%s",str().c_str());
#define TEST_COUT TestCout()
您应该定义如下:
static class LOGOUT {
public:
LOGOUT() {}
std::ostream& info() {
std::cout << "[info ] ";
return std::cout;
} logout;
使用此方法:
logout.info() << "test: " << "log" << std::endl;
请参考Mark Lakata的回答,这是我的方法:
gtest_cout.h
Step1:创建一个头文件,例如:Step1
代码:
#ifndef _GTEST_COUT_H_
#define _GTEST_COUT_H_
#include "gtest/gtest.h"
namespace testing
namespace internal
enum GTestColor
COLOR_DEFAULT, COLOR_RED, COLOR_GREEN, COLOR_YELLOW
extern void ColoredPrintf(GTestColor color, const char* fmt, ...);
#define GOUT(STREAM) \
std::stringstream ss; \
ss << STREAM << std::endl; \
testing::internal::ColoredPrintf(testing::internal::COLOR_GREEN, "[ ] "); \
testing::internal::ColoredPrintf(testing::internal::COLOR_YELLOW, ss.str().c_str()); \
} while (false); \
![]() |
讲道义的大海 · SonarQube集成Jacoco - 知乎 2 年前 |