c++ - 使用流将对象转换为字符串

标签 c++ unit-testing tdd stringstream

我有一个覆盖流运算符 << 的对象,它充当字符串流,使控制台打印变得容易。

cout << obj << endl;

我想通过将字符串输出与预期字符串进行比较来在单元测试中测试此功能。我目前通过以下方式完成此任务:

stringStream ss;
ss << obj;
string objStr = ss.str();

EXPECT_EQ(objStr, "expected string output");

这不是特别可读,当然也不简洁。有没有更简单、更短、更简单的方法来获取 obj 的字符串表示形式?

最佳答案

你可以写一个小的、通用的实用函数来为你做那件事:

#include <utility>
#include <string>
#include <sstream>

template<typename T>
std::string make_string(T const& o)
{
    std::stringstream ss;
    ss << o;
    return ss.str();
}

并以这种方式使用它:

EXPECTED_EQ(make_string(obj), "expected string output");

关于c++ - 使用流将对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821314/

相关文章:

c++使用ptr作为数组基础

c++ - 如何从自身加入 std::thread(在 C++11 中)

c++ - 无法使循环正常工作

unit-testing - 单元测试 DbContext

c# - 使用 MOQ 嵌套类和接口(interface) C# 进行单元测试

reactjs - Jest React Native 如何测试 index.PLATFORM.js

ruby-on-rails - 使用 rspec 测试 ActiveSupport::Notifications

c++ Mysql C API 连接问题

c# - 内存中的 SQLite - TransactionScope - 已检测到环境事务

ruby-on-rails - 使用 Rspec stub 链式方法