3

コマンド ラインに sth を出力する void 関数を確認するにはどうすればよいですか?

例えば:

void printFoo() {
                 cout << "Successful" < endl;
             }

そして、test.cppにこのテストケースを入れました:

TEST(test_printFoo, printFoo) {

    //what do i write here??

}

私は単体テストとgtestが初めてなので、明確に説明してください。ありがとうございました

4

1 に答える 1

8

テスト可能にするには、関数を変更する必要があります。これを行う最も簡単な方法は、ostream ( cout が継承するもの) を関数に渡し、単体テストで文字列ストリーム ( ostream も継承するもの) を使用することです。

void printFoo( std::ostream &os ) 
{
  os << "Successful" << endl;
}

TEST(test_printFoo, printFoo) 
{
  std::ostringstream output;

  printFoo( output );

  // Not that familiar with gtest, but I think this is how you test they are 
  // equal. Not sure if it will work with stringstream.
  EXPECT_EQ( output, "Successful" );

  // For reference, this is the equivalent assert in mstest
  // Assert::IsTrue( output == "Successful" );
}
于 2013-09-20T04:55:48.373 に答える