如何使用cin进行单元测试
How to unit test with cin?
这个问题的主要原因是我想测试我的操作符重载器,而不必在单元测试期间进行用户输入。我怎样才能最好地做到这一点?
std :: istream & operator>>( istream &in, Fruit & f )
{
char temp[31];
in >> temp;
f.name = new char[strlen(temp) + 1];
strcpy(f.name, temp);
for( int i = 0; i < CODE_LEN; i++ )
in >> f.code[i];
return in;
}
std :: ostream & operator<<( ostream &out, const Fruit & f )
{
out << setiosflags(ios::left) << setw(MAX_NAME_LEN) << f.name
<< " ";
for( int i = 0; i < CODE_LEN; i++ ) // why is this necessary?
out << f.code[i];
return out;
}
我发现的一种方法是使用sstream。
void main()
{
Fruit one;
ostringstream out;
istringstream in("Strawberry 4321");
in >> one;
out << one;
if( out.str() == "Strawberry 4321")
cout << "Success";
}
ostringstream和istringstream是迄今为止我发现的最好的使用方法。这里有一些关于使用stringstream、ostringstream还是istringstream的争论,如果你很好奇:istringstream, ostringstream和stringstream之间有什么区别?/为什么不在所有情况下都使用stringstream呢?请让我知道是否有更好的方法来测试这样的场景,显然除此之外使用测试框架。谢谢!
相关文章:
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 用于交叉编译和CMake的预处理器宏的单元测试
- C++ 用于单元测试的模板模板
- 提升 1.64 单元测试编译失败
- 单元测试欧拉到四元数实现失败
- 运行 C++ 单元测试时LNK2005链接错误
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Google Test 对自定义断言函数进行单元测试
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 在Qt C++单元测试中动态加载QQuickWindow而不是QQuickWidget
- MS 本机单元测试 - 断言::线程失败不起作用
- 如何获取 CMake 单元测试的相对路径?
- QTimer 超时不会在单元测试中触发
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 在 AtMega32a 上运行的C++的单元测试
- 通过 cin/cout 的协议单元测试 - 如何阻止流以等待内容?
- 如何使用cin进行单元测试