質問

LinuxのC ++で開発中で、自動テストをセットアップしようとしています。 CppUnitまたはCxxTestのようなテストフレームワークを使用する予定です。 Antを使用してソフトウェアをビルドし、テストの実行にも使用します。

一部のテストにはデータベースアクセスが含まれるので、Javaの世界でのDbUnit(JUnit拡張)と同様に、データベース内のテストデータの準備とクリーンアップのタスクを容易にするツールまたはフレームワークを探しています。

もう1つのオプションは、実際のDbUnitを使用することです。JavaVMが利用可能です。 DbUnitのAntタスクを使用することが最も有望であると思われます。関連するフィールドレポートは大歓迎です!

役に立ちましたか?

解決 3

C ++開発用のDbUnitのようなツールはないように思われるため、独自の小さなフレームワークを構築しました。基本的には、C / C ++テストランナー内から実際のDbUnit操作を呼び出すためのアダプターです。 DbUnitが提供する Antタスクを使用します。

system(" ant -Ddb.dataset = filename db.insert")などを呼び出す TS_DB_INSERT(filename)などのマクロを定義しました。

この場合、 db.insert は、データベースでINSERT操作を実行するDbUnitタスクを実行するAntターゲットです。 filename は、挿入するデータを含むXMLデータセットを参照します。 DbUnit compare をラップするアサーションマクロもあります。

テストケースは次のようになります。

void testDatabaseStuff
{
    TS_DB_INSERT("input.xml");

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}

他のヒント

ブーストユニットをお勧めしますテスト。データベースを手動でクリーンアップするには、おそらくセットアップと分解を使用する必要があります。もちろん、ODBCで独自のC ++ DbUnitを構築できます。私もこれを使用できるので、あなたが私に知らせてくれたら!

DBを操作するための独自のC ++ APIがあると思います。 もしそうなら、DBの準備はすべて自分で行ったほうがいいでしょう。その場合、DB APIもテストします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top