3

基本的に私はグーグルテストでいくつかのユニットテストを開始しようとしていますが、それをどうやって行うのかわかりません。試してテストするためのコードがいくつか与えられましたが、これを行う方法がわかりません。これは私がテストする必要があるコードの一部ですか?どこから始めればいいですか?助けてくれてありがとう。

void CCRC32::FullCRC(const unsigned char *sData, unsigned long ulDataLength, unsigned long *ulOutCRC)
{
    *(unsigned long *)ulOutCRC = 0xffffffff; //Initilaize the CRC.
    this->PartialCRC(ulOutCRC, sData, ulDataLength);
    *(unsigned long *)ulOutCRC ^= 0xffffffff; //Finalize the CRC.
}
4

2 に答える 2

6

CRC32 :: FullCRCをテストするときは、既知の値に対して結果を検証できるように、既知のCRCを与える入力文字列が必要です。また、文字列のサイズより短いまたは長い入力長を使用してテストし、入力が正しくない場合のメソッドの動作を確認する必要があります。また、文字列の代わりにnullポインターを指定して、メソッドがアプリケーションをクラッシュさせないことをテストすることもできます。

VC ++では、テストは次のようになります。

TEST(CRC32, FullCRC)
{
    //Assuming this is correct CRC (example)
    unsigned long nCorrectCRC = 0xAA55BB77;
    //A string to build crc for
    CString sValue("What is the CRC32 for this string");
    //Pointer to string buffer
    LPCSTR pBuf = sValue.GetBuffer(0);
    //Length of string
    unsigned long nLength = sValue.GetLength();
    //Calculated crc
    unsigned long nCalculatedCRC = 0;
    //Get the CRC
    CRC32 MyCRC;
    MyCRC .FullCRC(pBuf,nLength,nCalculatedCRC);
    //Do the test, GooglTest returns "Passed" or "Failed"
    ASSERT_TRUE(nCalculatedCRC == nCorrectCRC);
}
于 2011-11-22T12:54:31.377 に答える
5

これまでに見たことがあるかどうかはわかりませんが、ぜひ試してみてください。この簡単なチュートリアルで基本的な理解を得る必要があると確信しています。さらに、stackoverflowについてはすでに多くの回答が提供されており、私の意見では、Googletestをセットアップするのが最適です。とにかく、kjellaによって提供された答えを調べて、コードに実装してみてください。うまくいけば、それはあなたが期待するように動作するはずです。

注: Microsoft Visual Studio .Net 2003でこの同様の実装を実行しようとすると、Google Test Frameworkライブラリは、ランタイムライブラリをデバッグモードの場合は「シングルスレッドデバッグ」に、リリースモードの場合は「シングルスレッド」に自動的にデフォルト設定します。私が試した限りでは、コード生成から変更するオプションは利用できません。したがって、プロジェクトのランタイムライブラリとしてシングルスレッドオプションを選択していることを確認してください。それ以外は、このシンプルで短いチュートリアルは完璧に機能します!

幸運を!

于 2011-11-22T16:55:54.793 に答える