テスト
C++11 ドライバーのテストでは、C++ のテストフレームワークである Catch が使用されC++。
ドライバー内の各クラスには、 src/mongocxx/test
に対応するファイルがあります。 新しいドライバーは libmongoc を ラップするため 、実行中の mongod に対する操作の最初の動作をテストするのではなく、個々のクラスの動作をモックしてテストすることをおすすめします。言い換えれば、統合テストではなく、ユニットテストです。
test/collection.cpp
にもこのドライバーの統合テストがあります。
既存のテストの実行
以下を使用してテストをビルドします。
make
これにより、テスト バイナリが生成されます。 次の方法ですべてのテストを実行することもできます。
make test
または、Catch を使用したより詳細な出力については、生成されたバイナリを実行します。
./build/src/mongocxx/test/test_driver
または、ctest コマンドを実行し、crest のさまざまなフラグを使用できます。 例:
ctest -V
は冗長な出力でテストを実行するために使用できます。または
ctest -R bson
は、 BSONテストのみを実行するために使用できます。
統合テストの実行
一部のテストでは実行中の mongod インスタンスが必要です。 このためには、まずMongoDB サーバーをダウンロードします。
次に、 コマンドを使用してデフォルト ポートに mongod を配置します。
mongod --setParameter enableTestCommands=1
インストールされている場合は、 mongod 実行可能ファイルを保持するディレクトリに移動し、次を実行します。
./mongod --setParameter enableTestCommands=1
使用するフラグを任意の コマンドに指定します。ただし、 --port
は対象外です。 mongod が実行されている間に、通常通りテストを実行します。
新しいテストの作成
ドライバーに機能を追加する場合は、その機能のテストも記述してください。 既存のクラスに追加するには、既存のテスト ケースに新しいセクションが追加される必要があります。
TEST_CASE("existing_class", "[existing_class]") { SECTION("Can do some new thing") { ... REQUIRE(new_thing_works); } }
新しいクラスを追加する場合は、そのクラスの新しいテストファイルをtest
ディレクトリに追加してください。 テスト ファイルの名前は、新しいクラスのファイル名と一致する必要があります。 src/mongocxx/test/CMakeLists.txt
にファイルをドライバーのテスト ターゲットのソースとして追加する必要があります。
set(mongocxx_test_sources ... some_new_class.cpp ... )