0

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

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

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

4

3 に答える 3

2

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

于 2009-03-02T15:11:17.897 に答える
0

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

TS_DB_INSERT(filename)which callなどのいくつかのマクロを定義system("ant -Ddb.dataset=filename db.insert")しました。

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

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

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

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}
于 2009-03-14T18:46:32.237 に答える
0

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

于 2009-03-02T12:39:50.130 に答える