Las pruebas para el driver C++11 utilizan Catch, un marco de pruebas para C++.
Cada clase en el controlador tiene un archivo correspondiente en src/mongocxx/testDado que el nuevo controlador encapsula libmongoc, preferimos simular y probar el comportamiento de clases individuales en lugar de probar el comportamiento integral de las operaciones con mongod en ejecución. En otras palabras, se trata de pruebas unitarias, no de pruebas de integración.
También tenemos pruebas de integración para este controlador en test/collection.cpp.
Ejecutando las pruebas existentes
Compile las pruebas con:
make
Esto generará los binarios de prueba. Puedes ejecutar todas las pruebas con:
make test
o, para obtener una salida más detallada con Catch, ejecute el binario generado:
./build/src/mongocxx/test/test_driver
o puede ejecutar el comando ctest y hacer uso de las distintas banderas de ctest. Por ejemplo:
ctest -V
se puede utilizar para ejecutar las pruebas con salida detallada, o
ctest -R bson
podría usarse para ejecutar solo las pruebas bson.
Ejecución de pruebas de integración
Algunas pruebas requieren una instancia de Mongod en ejecución. Para ello, primero descargue el servidor MongoDB.
A continuación, implemente un mongod en el puerto por defecto con el comando:
mongod --setParameter enableTestCommands=1
Si está instalado, de lo contrario navegue al directorio que contiene el ejecutable mongod y ejecute:
./mongod --setParameter enableTestCommands=1
siguiendo cualquier comando con los flags que quieras usar, excluyendo --port. Mientras que mongod esté en funcionamiento, ejecuta las pruebas de la forma habitual.
Escribir nuevas pruebas
Si desea añadir una función al controlador, escriba también una prueba para ella. Las adiciones a las clases existentes deben incluir nuevas secciones en los casos de prueba existentes:
TEST_CASE("existing_class", "[existing_class]") { SECTION("Can do some new thing") { ... REQUIRE(new_thing_works); } }
Si vas a añadir una nueva clase, por favor añade un nuevo archivo de prueba para ella en el directorio test. El nombre del archivo de prueba debe coincidir con el nombre del archivo de la nueva clase. Necesitarás agregar tu archivo como origen para el objetivo de prueba del controlador, en src/mongocxx/test/CMakeLists.txt:
set(mongocxx_test_sources ... some_new_class.cpp ... )