如何使用cin进行单元测试?

5
这个问题的主要原因是我希望在单元测试期间测试我的运算符重载器,而不必进行用户输入。我该如何最好地实现这一点?
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;
}
1个回答

4
我发现一种方法是使用 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?除了使用测试框架外,如果有更好的测试场景,请告诉我。谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接