2015-06-29 12 views
5

Mam projekt C++, który nie używa Qt. Używam Qt Creator jako mojego IDE, ponieważ jest to bardzo wygodne.Testowanie jednostkowe (nie Qt) kodu C++ w Qt Creator?

Czytałem o testowaniu jednostkowym w Qt Creator here i myślę, że test Qt wydaje się całkiem niezły. Czy istnieje sposób użycia testu Qt z moim projektem innym niż Qt C++?

Zauważ, że mam biblioteki Qt zainstalowane na moim komputerze, których używam do programowania. Ale nie chcę, aby skompilowany program, który wypuszczam, zależy od bibliotek Qt.

Ponadto, funkcja, która mi się podobała podczas używania Visual Studio, polega na tym, że testy są uruchamiane automatycznie za każdym razem, gdy buduję swój projekt. Czy mogę zrobić to samo z Qt Creator?

Przy okazji, jeśli możesz zasugerować inną strukturę testowania jednostkowego, którą mogę łatwo użyć w Qt Creator, to też jest w porządku.

+1

Osobiście uważam, nie ma prawie żadnego wsparcia dla testów w Qt Creator i oficjalnej dokumentacji dla bardziej skomplikowanych testów z Qt brakuje. – Simon

+0

Prawdopodobnie musisz sam skonfigurować projekt Qt, oba projekty udostępniają wspólne pliki testerów. – UmNyobe

+0

@Simon Czy masz jakieś inne sugestie, których mogę użyć z Qt Creator? – becko

Odpowiedz

1

W rzeczywistości nigdy nie próbowano testować kodu niekodowanego w QtCreator, ale natura kodu Qt nie ma znaczenia. To jak pójdę:

  1. Weź zwyczajną, qt projekt
  2. Dodaj projektu nadrzędnego typu subdir działać jak visual studio rozwiązanie będzie.
  3. Dodaj kolejny projekt pod rodzica, który jest qt projekt testowy, tzn

    QT += testlib 
    CONFIG += qtestlib 
    
  4. Znajdź sposób, aby podzielić między obu źródeł. Możesz dodać pliki źródłowe, używając ich względnej ścieżki, utworzyć statyczną bibliotekę lub użyć pliku pri (project header file) dla projektów innych niż qt i qttestlib.

W tej konfiguracji, budując projekt na najwyższym poziomie, zbudujesz swój normalny projekt i wykonasz test również.

z subdir projekty szablonów można uzyskać z ctrl + N nie są bardzo pomocne. Ale plik projektu najwyższego poziomu może być tak prosty jak

include (commonsrc.pri) 

TEMPLATE = subdirs 
CONFIG += ordered 

SUBDIRS += appdir 
SUBDIRS += testingdir 
Tak wygląda najwyższy poziom jednego z moich projektów.

Aby uniknąć bólów głowy, dopasuj hierarchię folderów do hierarchii podfolderów. Na przykład

solutiondir 
    commondir 
    appdir 
    testingdir 
    commonsrc.pri <--- allow you to write commondir\mycpp.cpp in any project