私はParasoftのC++テストを使用してC++コードの単体テストを行っています。 次の問題が発生しました。この場合ファイル入力の出力を伴うメソッドのユニットテストを行う方法は?
bool LoadFileToMem(const std::string& rStrFileName)
{
if(openfile(rStrFileName) == successfull)
{
if(get_file_size() == successfull)
{
if(read_entire_file_to_buffer() == successfull)
{
return true;
}
return false;
}
return false;
}
return false;
}
私の質問は次のとおりです:
は、私は、ファイルシステム関数のスタブを使用する必要が私は次の(擬似コード)と同様の機能を持っていますか?または、ユニットテストを実行するための特定のサンプルテストファイルを含める必要がありますか?
私の場合、ファイル入力にはstd::fstreamクラスが使用されます。
もっと良い提案がありますか? (C++テストでは最適ですが、必須ではありません)。
正しいですが、バッファはファイルのサイズと等しくなるように動的に割り当てられます。私は少し問題を単純化しました[私はメモリを割り当てるためのスタブを持っていますが、C++ Testはfstreamクラスメソッドのスタブを作るのには役に立たない]。 – INS
@ Iulian:動的割り当てがまだ失敗する可能性があります(たとえば、100 GBのメモリを要求した場合など)。制御していないデータとやり取りしている場合、処理できないデータをコードがどのように処理するかをテストする必要があります優雅にまたはちょうどクラッシュ?)。 –
@ジョンRストローム:これは理論的には正しいですが、多くの場合は過剰です。私は1000行の生産コード+ 20 000行のテストコードを、独自の問題とバグを維持したくない。テストコードのテストを書く必要がありますか?複雑な関数をモックするのは簡単な作業ではありません。 –