首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >googletest打印COleDateTime值

googletest打印COleDateTime值
EN

Stack Overflow用户
提问于 2011-07-08 10:16:35
回答 1查看 356关注 0票数 0

我已经将googletest集成到我们的MFC应用程序中。然而,在编写涉及COleDateTime对象的测试时,我遇到了以下警告:

代码语言:javascript
复制
1>gtest/gtest-printers.h(169) : warning C4244: 'initializing' : conversion from 'DATE' to 'const testing::internal::BiggestInt', possible loss of data
1>gtest/gtest-printers.h(168) : while compiling class template member function 'void testing::internal2::TypeWithoutFormatter<T,kTypeKind>::PrintValue(const T &,std::ostream *)'

试验结果如下:

代码语言:javascript
复制
TEST(FunctionTest, SumDays) 
{
    COleDateTime res = SumDays(COleDateTime(2010,10,31,0,0,0), 1);
    EXPECT_EQ(COleDateTime(2010,11,01,0,0,0), res);
}

问题是,我不能添加<<运算符或PrintTo方法,正如文档所宣布的那样。分配更多的测试将涉及日期值,因此我希望避免文档所指的内联解决方案。

有一个很好的解决方案来控制COleDateTime值的打印字符串吗?

当前输出的结果如下:

代码语言:javascript
复制
<failure message="Value of: res&#x0A;  Actual: 40512&#x0A;Expected: COleDateTime(2010,10,30,0,0,0)&#x0A;Which is: 40481" type=""><![CDATA[.\Code.cpp:6837
Value of: res
  Actual: 40512
Expected: COleDateTime(2010,10,30,0,0,0)
Which is: 40481]]></failure>

注意实际的值!

EN

回答 1

Stack Overflow用户

发布于 2014-06-02 12:58:22

我有同样的问题,并指出,与Caerbanogs语句不同的是,实现PrintTo-Function确实有帮助。重要的一件事是确保该类的类“扩展”了googletest的行为,使PrintTo-Function完全相同。

在本例中,这是名称空间ATL

这将为COleDateTimeCOleDateTimeSpan提供以下解决方案

代码语言:javascript
复制
namespace ATL {

    void PrintTo(const COleDateTime& dtDatum, ::std::ostream* os)
    {
        // I want an additional Format, so I append a human readable notion
        *os << dtDatum.m_dt << " (" << (LPCSTR)dtDatum.Format(_T("%d.%m.%Y %H:%M:%S")) << ")";
    }

    void PrintTo(const COleDateTimeSpan& dsSpanne, ::std::ostream* os)
    {
        *os << dsSpanne.m_span;
    }

}

只要把它放到一个地方,你就可以把它包含在你所有的谷歌项目中(如果你有一个以上的话)。

最后,它对我有用:-)

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

https://stackoverflow.com/questions/6623063

复制
相关文章

相似问题

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