2013-05-01 18 views
6

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ąć:

  1. Ustaw katalog roboczy dla „Test Explorer”
  2. Ustaw katalog roboczy dla każdego pliku wykonywalnego testowym
  3. Ustaw katalog roboczy dla wszystkich testów google
  4. 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?

Odpowiedz

0

Przy obecnej wersji 0.12.3 GTA można przynajmniej osiągnąć (1):

  1. Narzędzia
  2. opcje
  3. adapter testowy Google (lub użyć opcji wyszukiwania)
  4. Ogólne
  5. Katalog roboczy (na dole)

Niestety G Wydaje się, że TA obsługuje tylko $(ExecutableDir) (domyślnie) i $(SolutionDir). Wygląda na to, że GTA nie może stwierdzić, który projekt jest projektem testu jednostkowego, więc nie można użyć katalogu projektu jako katalogu startowego.

Screenshot of GTA options dialog