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 envuelve libmongoc, preferimos simular y probar el comportamiento de clases individuales en lugar de probar el comportamiento extremo a extremo de las operaciones contra un mongod en ejecución. En otras palabras, estas son pruebas unitarias en lugar de pruebas de integración.
También tenemos pruebas de integración para este driver en test/collection.cpp.
Ejecutando las pruebas existentes
Compile las pruebas con:
make
Esto generará binarios de prueba. Puedes ejecutar todas las pruebas con:
make test
o, para una salida más detallada con Catch, ejecuta 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
puede utilizarse para ejecutar las pruebas con una salida detallada, o
ctest -R bson
se podría usar para ejecutar solo las pruebas bson.
Ejecutando pruebas de integración
Algunas de las pruebas requieren una instancia en ejecución de mongod. Para esto, 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 hasta el 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 agregar una funcionalidad al driver, también escriba una prueba para ella. Las adiciones a las clases existentes deben tener secciones nuevas agregadas a 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 ... )