테스트
C++ 운전자 에 대한 테스트는 C++ 용 테스트 프레임워크 인11 Catch 를 사용합니다.
운전자 의 각 클래스에는 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 ... )