Benutzer-Werkzeuge

Webseiten-Werkzeuge


edv:prg:c:googletest

Google C++ Testing Framework

Integration in IDE

In MS VisualStudio integrieren:

Auspacken und in .\gtest-1.7.0\msvc\ die Solution gtest-md.sln aufmachen.

"The solution file with the -md suffix uses DLL versions of Microsoft runtime libraries,"

http://leefrancis.org/2010/11/17/google-test-gtest-setup-with-microsoft-visual-studio-2008-c/

Dort das Projekt gtest-md anpassen:

  • Plattform x64 (GT kommt nur mit Win32)
  • character set = "not set" (Eingestellt ist MBCS)
  • Übersetzen.
  • Pfade für lib und include im eigenen Projekt setzen.

VS Plugin: https://visualstudiogallery.msdn.microsoft.com/9dd47c21-97a6-4369-b326-c562678066f0?SRC=VSIDE
Damit werden die Tests im VS Test Explorer gelistet.
Voraussetzung: Der Name der EXE muss mit *Test.exe übereinstimmen (Regex ist "[Tt]est[s]{0,1}.exe").
https://github.com/markusl/GoogleTestRunner/blob/master/GoogleTestRunner/GoogleTestDiscoverer.fs
Ergo: einfach in den Projektsettings den TargetName auf "$(ProjectName).Test" setzen.

Separater Testrunner: https://github.com/ospector/gtest-gbar

Doku zu GT: https://github.com/google/googletest/blob/master/googletest/docs/Documentation.md

Tests, die per default NICHT laufen sollen (perftests, etc.) müssen disabled werden, indem DISABLED_ vor den Namen gehängt wird.
https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md


  • assert
    Ersetzt VS::Assert::* und verzweigt wahlweise auf GT und VS.

FIXME

GT Kompilieren

Vor dem Kompilieren sollte man das File ./gtest-1.7.0/include/gtest/internal/gtest-port.h anschauen.
Dort am Anfang sind mehrere Makros beschrieben, die das Kompilieren beeinflussen (z.B. "GTEST_HAS_PTHREAD", "GTEST_LINKED_AS_SHARED_LIBRARY", "GTEST_CREATE_SHARED_LIBRARY", "GTEST_OS_AIX", "GTEST_OS_SOLARIS", etc.).

Ich habe GT wie folgt kompiliert:

AIX

Im Ordner "username@aix:/users/username/ProduktName/ProduktRelease/Code/external/gtest/gtest-1.7.0/gcc-AIX":

# Pfade zu den GCC-Libraries:
GCC_IncludePath=/usr/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.8.1/include-fixed:/usr/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.8.1/include:/usr/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.8.1/include/c++/powerpc-ibm-aix6.1.0.0/pthread/ppc64:/usr/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.8.1/include/c++
# Pfade zu den AIX-Libraries:
SYS_IncludePath=/usr/include:/usr/include/sys
 
export INCLUDE=${GCC_IncludePath}:${SYS_IncludePath}
export CPLUS_INCLUDE_PATH=${INCLUDE}
export C_INCLUDE_PATH=${INCLUDE}
 
export GTEST_DIR=..
 
# Kompilieren:
# Mit dem Parameter "-isystem" (so steht es in der Doku) hat es nicht funktioniert,
# stattdessen mit "-I${GTEST_DIR}/include"
g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -pthread -D_AIX -DGTEST_HAS_PTHREAD=1 -mcpu=powerpc64 -maix64 -c -x c++ -std=c++11 -g -ggdb -w -fpermissive -fexceptions -fno-diagnostics-show-option -O0 -fPIC ${GTEST_DIR}/src/gtest-all.cc
 
# Kontrolle:
nm -g -X64 gtest-all.o | more
 
# (Statische) Library bauen:
ar -rv -X64 libgtest.a gtest-all.o
 
# Kontrolle:
nm -g -X64 libgtest.a | more

Für AIX:

RHEL

Im Ordner "username@rhel:/users/username/ProduktName/ProduktRelease/Code/external/gtest/gtest-1.7.0/gcc-RHEL":

# Pfade zu den GCC-Libraries:
GCC_IncludePath=/opt/rh/devtoolset-3/root/usr/include/c++/4.9.2
# Pfade zu den AIX-Libraries:
SYS_IncludePath=/usr/include:/usr/include/sys
 
export INCLUDE=${GCC_IncludePath}:${SYS_IncludePath}
export CPLUS_INCLUDE_PATH=${INCLUDE}
export C_INCLUDE_PATH=${INCLUDE}
 
export GTEST_DIR=..
 
# Kompilieren:
g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -pthread -m64 -c -x c++ -std=c++11 -g -ggdb -w -fpermissive -fexceptions -fno-diagnostics-show-option -O0 -fPIC ${GTEST_DIR}/src/gtest-all.cc
 
# Kontrolle:
nm -g gtest-all.o | less
 
# (Statische) Library bauen:
ar -rv libgtest.a gtest-all.o
 
# Kontrolle:
nm -g libgtest.a | less

Stand: 08.11.2016

EOF

edv/prg/c/googletest.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki