Aktywne Wpisy
1dlaczegoja1 +1
#slubodpierwszegowejrzenia
Pytam po raz ostatni:
1) O co macie ból d...py do Kołcza?
2) W jaki sposób zmanipulował, a nawet skrzywdził (!) Karolinę?
Pytam po raz ostatni:
1) O co macie ból d...py do Kołcza?
2) W jaki sposób zmanipulował, a nawet skrzywdził (!) Karolinę?
Amigoyamigo +2
Treść przeznaczona dla osób powyżej 18 roku życia...





Mam pytanie względem #cpp, #visualstudio i testów. Po dwudniowych bojach z vs w końcu ogarnąłem ten natywny framework testowy ( ͡° ͜ʖ ͡°). I mam teraz pytanie - w jaki sposób powinienem pisać testy? A więc:
1. Dzielenie na pliki - jak? 1 klasa unit testów na plik?
2. Klasy - jak duże? Jaki fragment testowanego kodu powinny zawierać?
3. Metody - wiem, że powinny być niezależne. Ale jak ogarnąć w fajny sposób konstruktor? Tutaj chyba narzuca się, aby na całą klasę był jeden taki ctor, a to implikuje liczbę klas do sporych wartości (i czy z tego powinno wynikać, że konstruktor powinien być możliwie najmniejszy? Np. testuję pierwiastkowanie. Klasą ma być TestyPierwiastkowania, a testami asercje dla danych skrajnych?).
I żeby nie śmiecić zapytam też od razu - chcę napisać symulator maszyny turinga. Czy oparcie interfejsów zewnętrznych (wprowadzanie/wyprowadzanie danych) na abstrakcyjnych klasach będzie ok? Myślałem, żeby potem na potrzeby testów zrobić takie FakeInterfaces, żeby sprawdzać w późniejszych testach zachowanie całego programu. To coś w stylu api? Bo też chciałem zrobić to tak, że sama logika byłaby oddzielnym projektem, który produkowałby dll, który później będzie obsługiwać Qt.
To będzie mój pierwszy tak rozbudowany projekt w cpp, który chciałbym pokazać na rozmowie kwalifikacyjnej (na staż oczywiście). Więc pytanko - do czego powinienem podejść w inny sposób żeby nie narobić sobie wstydu?
Ad1. Każda klasa powinna mieć swoją test suitę. Klasy powinny być spójne logicznie i możliwie jak najmniejsze.
Ad2. Patrz Ad.1
Ad3. Nie bardzo rozumiem... Co rozumiesz przez "ogarną konstruktor"?
Klasy abstrakcyjne są jak najbardziej ok. To o czym piszesz to testowanie oparte na mockach. Generalnie podejście jest takie, że powinieneś testować klasę wyłącznie przez publiczne metody - różne kombinacje z odsłanianiem metod są niebezpieczne i nieeleganckie. Dzięki temu też łatwiejsze jest testowanie
@dar3Q: boli jak się to czyta (ʘ‿ʘ)
Od siebie polecę również GTest, jakiś tutorial o unit testach i na początek styknie. Testy powinny być możliwie jak najkrótsze i (w unit testach) powinieneś każdą funkcjonalność osobno testować, a nie wszystko w jednym teście. Każdy test powinien jedną rzecz tylko sprawdzać i nie polegać (idealnie) na żadnych innych.