Mam rozwiązanie Visual Studio 2012 C++ generowane przy użyciu CMake, w którym używam google test dla testów jednostkowych. Działa to głównie dobrze, ale w jednym z moich testów chcę odczytać plik ustawień z lokalnego katalogu. Aby znaleźć plik skopiować plik jako krok po kompilacji z mojego drzewa kodu źródłowego do kompilacji i katalogu instalacyjnego przy użyciu następujących CUpewnij poleceń:Katalog roboczy testu google w Visual Studio
install(FILES ./adapters/settingFile.txt DESTINATION .)
add_custom_command(TARGET testAdapters POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/adapters/settingFile.txt"
"${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Copying elastix parameter files")
Działa to dobrze: po wybudowaniu mój test settingFile.txt jest w tej samej lokalizacji, co plik testAdapters.exe. Kliknięcie prawym przyciskiem myszy projektu testAdapters i rozpoczęcie sesji debugowania również działa.
Jeśli jednak zdecyduję się uruchomić test z poziomu okna "Test Explorer", przez "Run All" lub klikając prawym przyciskiem myszy test i wybierając "Run selected tests", test nie może znaleźć pliku settingsFile.txt. Klikając prawym przyciskiem myszy i wybierając polecenie "Debuguj wybrane testy", stwierdziłem, że podczas uruchamiania testu z "Eksploratora testów" katalog roboczy domyślnie jest katalogiem programów studyjnych: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
. Mogę myśleć o kilku możliwych rozwiązań, ale nie wiem jak to osiągnąć:
- Ustaw katalog roboczy dla „Test Explorer”
- Ustaw katalog roboczy dla każdego pliku wykonywalnego testowym
- Ustaw katalog roboczy dla wszystkich testów google
- Niektóre zestawy definiują punkty wskazane przez użytkownika i używają go w kodzie testowym. (Uważam to za dość brzydkie rozwiązanie)
Potrzebuję rozwiązania niezależnego od platformy. Czy ktoś wie, jak osiągnąć (1) lub (2), czy znasz lepsze rozwiązanie?