首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在谷歌C++测试框架中发送自定义消息?

如何在谷歌C++测试框架中发送自定义消息?
EN

Stack Overflow用户
提问于 2013-05-10 22:28:50
回答 6查看 74.6K关注 0票数 113

我使用谷歌C++测试框架对代码进行单元测试。我使用带C++单元测试模块的Eclipse进行输出分析。

以前我使用过CppUnit,它有宏家族消息,可以这样调用:

代码语言:javascript
复制
CPPUNIT_ASSERT_EQUAL_MESSAGE("message",EXPECTED_VALUE,ACTUAL_VALUE)

并允许发送自定义消息来测试输出。

有办法在google测试输出中包含一些自定义文本吗?

(最好是将消息包含到现有程序读取的数据中,以便使用google测试进行自动单元测试。)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-10 22:50:41

gtest宏返回一个流,用于在测试失败时输出诊断消息。

代码语言:javascript
复制
EXPECT_TRUE(false) << "diagnostic message";
票数 205
EN

Stack Overflow用户

发布于 2015-03-19 21:52:44

在当前版本的gtest中,没有办法干净地这样做。我查看了代码,如果测试失败,将显示唯一的文本输出(包装在gtest“Messages”中)。

但是,在某个时候,gtest开始对屏幕进行printf'ing,您可以利用上面的级别获得与平台无关的颜色。

这里有一个被黑的宏来做你想做的事。这使用了最普通的内部文本着色。当然,internal::名称空间应该会敲响警钟,但是它可以工作。

用法:

代码语言:javascript
复制
TEST(pa_acq,Foo)
{
  // C style
  PRINTF("Hello world \n");

  // or C++ style

  TEST_COUT << "Hello world" << std::endl;
}

输出:

代码:

代码语言:javascript
复制
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()
票数 66
EN

Stack Overflow用户

发布于 2018-02-22 10:13:52

有一种非常简单的和hacky方法(不需要深入内部类或创建新的自定义类)。

只需定义一个宏:

代码语言:javascript
复制
#define GTEST_COUT std::cerr << "[          ] [ INFO ]"

并在测试中使用GTEST_COUT (就像cout ):

代码语言:javascript
复制
GTEST_COUT << "Hello World" << std::endl;

你会看到结果:

他的发现归功于@Martin Nowak

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16491675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档