2008-11-03 16 views
7

Mam duży projekt, do którego próbuję korzystać z TDD. Używam Tut jako mojej ramy testowej, która ma swoje wady, ale wystarcza do tego, czego potrzebuję.Budowanie i uruchamianie testów jednostkowych C++ w Visual Studio (TDD)

Potrzebuję wykorzystać szwy testowe łącza czasu, każdy test musi być w swoim własnym pliku wykonywalnym. Projekt tego pliku wykonywalnego uruchamia się następnie jako krok do kompilacji.

Niestety, oznacza to, że mój program Visual Studio Sln wypełnia testy, które nie są skalowalne, a także ukrywają rzeczywiste ważne projekty.

Czy ktoś wie o lepszym sposobie przeprowadzania tych testów? Czy można ukryć projekty przed kompilacją, a mimo to nadal je budować?

+0

Następnie zaktualizowałem, dodatek folderów rozwiązań rozwiązuje ten problem. Mogę po prostu umieścić moje testy w folderze. –

Odpowiedz

4

"Czy można ukryć projekty przed kompilacją, a mimo to nadal je budować?"

Można utworzyć osobne rozwiązanie dla przypadków testowych. Następnie można skonfigurować etap tworzenia postu głównych projektów. Ten post-build powinien budować projekty testowe za pomocą osobnego rozwiązania i uruchamiać je. Budowanie projektów testowych powinno odbywać się za pośrednictwem wiersza poleceń (patrz np. here).

Jeśli trzeba połączyć swoje testy jednostkowe niektóre lib-s z głównych projektów, można użyć

#pragma comment(lib, "libname") 

Zobacz this MSDN page szczegóły.

+0

Podoba mi się pomysł stworzenia oddzielnego slna, mam nadzieję, że uda mi się udostępnić pliki obj. –

+0

Nie chciałem dzielić się obj-s ... Powodzenia :) – sergtk

0

Możesz spróbować pogrupować testy w foldery (czy nazywane są filtrami?) W twoim rozwiązaniu w Eksploratorze rozwiązań. To oddzieli testy od twoich innych projektów.

Ale, w przeciwnym razie, można by uniknąć używania szwów testowych łącza czasu (Tak, wiem, prawdopodobnie jest za późno, aby to zasugerować) i użyć polimorfizmu, aby zapewnić zmienność w czasie wykonywania i mieć mniej projektów testowych?

0

Nie wiem, czy nadal szukasz rozwiązania. Ale oto pomysł:

Możesz przechowywać wszystkie swoje testy w jednej bibliotece i napisać aplikację, która się spawnuje i wykonuje każdy test. W ten sposób otrzymasz jeden plik wykonywalny (a więc jeden projekt) dla pakietu, a każdy test będzie jak oddzielny plik wykonywalny. To jest w rzeczywistości mechanizm używany w CUnitWin32. Możesz nawet być w stanie zawrzeć testy w tych ramach.

Powiązane problemy