Rozwój oparty na testach oznacza napisanie testu przed kodem i wykonanie określonego cyklu :
- Napisz test
- Sprawdź test (uruchom)
- Napisz kod produkcji
- Sprawdź test (uruchom)
- Wyczyść kod produkcji
- Sprawdź test (uruchom)
Moim zdaniem jest to możliwe tylko wtedy, gdy twoje rozwiązanie programistyczne pozwala bardzo szybko przełączać się między kodem produkcyjnym i testowym oraz bardzo szybko wykonywać test dla określonej części kodu produkcyjnego.
Teraz, mimo że istnieje wiele frameworków do testowania jednostek dla C ++ (używam bankomatu Bost.Test.), Wydaje się, że tak naprawdę nie istnieje żadne przyzwoite (dla natywnego C ++ ) rozwiązanie Visual Studio (Plugin), które tworzy TDD cykl znośny bez względu na zastosowane ramy.
„Znośny” oznacza, że uruchamianie testu określonego pliku cpp odbywa się jednym kliknięciem bez konieczności ręcznego konfigurowania osobnego projektu testowego itp. „Znośny” oznacza również, że rozpoczyna się prosty test (łączenie!) I działa bardzo szybko .
Jakie narzędzia (wtyczki) i techniki są dostępne, dzięki czemu cykl TDD jest możliwy do tworzenia natywnego C ++ w Visual Studio?
Uwaga: Nie mam nic przeciwko darmowym lub „komercyjnym” narzędziom.
Proszę : Brak zaleceń ramowych. (Chyba że framework ma dedykowaną wtyczkę Visual Studio i chcesz ją polecić).
Edytuj notatkę : Dotychczasowe odpowiedzi zawierały łącza do sposobu zintegrowania frameworku testów jednostkowych z Visual Studio. Zasoby mniej więcej opisują sposób, w jaki środowisko UT kompiluje się i uruchamia pierwsze testy. Nie o to chodzi w tym pytaniu. Jestem zdania, że aby naprawdę produktywnie pracować, mając Testy Jednostkowe w ręcznie utrzymywanym (!) Oddzielnym vcproj od twoich klas produkcyjnych dodasz tak dużo narzutu, że TDD „nie jest możliwe”. O ile mi wiadomo, nie dodajesz dodatkowych „projektów” do rzeczy Java lub C #, aby włączyć Testy Jednostkowe i TDD, i to nie bez powodu. To powinno być możliwe z C ++ przy odpowiednich narzędziach, ale wydaje się (chodzi o to pytanie), że jest bardzo mało narzędzi dla TDD / C ++ / VS.
Googlując się, znalazłem jedno narzędzie, VisualAssert , które wydaje się zmierzać we właściwym kierunku. Jednak afaiks nie wydaje się być w powszechnym użyciu (w porównaniu do CppUnit, Boost.Test itp.).
Edycja: Chciałbym dodać komentarz do kontekstu tego pytania. Myślę, że to dobre podsumowanie zarysowania (części) problemu: (komentarz Billy ONeal )
Program Visual Studio nie używa „skryptów kompilacji”, które użytkownik może w rozsądny sposób edytować. Jeden projekt tworzy jeden plik binarny. Co więcej, Java ma właściwość, że Java nigdy nie buduje pełnego pliku binarnego - plik binarny, który budujesz, jest tylko ZIP-em plików klas. Dlatego możliwe jest ręczne kompilowanie, a następnie JAR razem ręcznie (używając np. 7z). Zarówno C ++, jak i C # faktycznie łączą ich pliki binarne, więc ogólnie mówiąc, nie można napisać takiego skryptu. Najbliższe, co możesz uzyskać, to skompilować wszystko osobno, a następnie wykonać dwa połączenia (jedno dla produkcji, jedno dla testowania).
7z
.). Zarówno C ++, jak i C # faktycznie łączą ich pliki binarne, więc ogólnie mówiąc, nie można napisać takiego skryptu. Najbliższe, co możesz uzyskać, to skompilować wszystko osobno, a następnie wykonać dwa połączenia (jedno dla produkcji, jedno dla testowania).
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- Nie sądzę, żeby to było poprawne. Zwykle masz również wiele projektów w języku C #; nie chcesz wysyłać kodu testowego w produkcyjnym pliku binarnym.