测试
C++11 驾驶员的测试使用 Catch ( C++测试框架)。
驾驶员中的每个类在 src/mongocxx/test
中都有相应的文件。 因为新的驾驶员封装 了 libmongoc ,我们更喜欢模拟和测试单个类的行为,而不是针对运行的mongod测试操作的端到端行为。换句话说,这些是单元测试而不是集成测试。
我们还在test/collection.cpp
中对此驱动程序进行了集成测试。
运行现有测试
使用以下内容构建测试:
make
这将生成测试二进制文件。 您可以使用以下命令运行所有测试:
make test
或者,要使用 Catch 获得更详细的输出,请运行生成的二进制文件:
./build/src/mongocxx/test/test_driver
或者,您可以运行 ctest 命令并使用 ctest 的各种标志。 例如:
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 ... )