Testowanie projektu
Podstawowe założenie: testujemy 100% kodu. Testy powinny być pisane razem z właściwym kodem. Nie ma znaczenia czy przed czy po, ważne, żeby przed zamknięciem ticketa mieć pewność, że kod robi to co byśmy chcieli.
Manual do Boost::test macie tutaj: http://www.boost.org/doc/libs/1_39_0/libs/test/doc/html/utf/user-guide.html
Jako wzoru można użyć testów aktuatora: source:trunk/waterworld/tests/test_actuator.cpp Konieczne jest również dopisanie operatorów wyjścia do pliku nagłówkowego: source:trunk/waterworld/tests/tests.h
Całość projektu można szybko przestestować pod Linuksem skryptem test.sh który umieściłem w trunku.
Jeśli któryś moduł nie będzie przetestowany w 100%, będę wrzeszczał. W przypadku wątpliwości na pytania o testowanie jestem w stanie odpowiadać i ja (lRem) i Mariusz.
Jeśli coś pójdzie nie tak, to wyniki testów pojawiają się w pliku build/Testing/Temporary/LastTest.log - poziom szczegółowości jak do tej pory zawsze mi wystarczał, żeby dojść co jest nietego.
Sprawdzenie które dokładnie linijki nie zostały wykonane:
lrem@mbp:trunk $ cd build/waterworld/CMakeFiles/WaterWorld.dir/ lrem@mbp:WaterWorld.dir $ gcov iworld.cpp.gcno File '/usr/include/c++/4.0.0/new' Lines executed:0.00% of 2 /usr/include/c++/4.0.0/new:creating 'new.gcov' File '/Users/lrem/waterworld/trunk/waterworld/iworld.cpp' Lines executed:43.75% of 16 /Users/lrem/waterworld/trunk/waterworld/iworld.cpp:creating 'iworld.cpp.gcov' File '/usr/include/c++/4.0.0/bits/stl_list.h' Lines executed:6.85% of 73 /usr/include/c++/4.0.0/bits/stl_list.h:creating 'stl_list.h.gcov' File '/usr/include/c++/4.0.0/ext/new_allocator.h' Lines executed:0.00% of 14 /usr/include/c++/4.0.0/ext/new_allocator.h:creating 'new_allocator.h.gcov' File '/usr/include/c++/4.0.0/bits/allocator.h' Lines executed:20.00% of 5 /usr/include/c++/4.0.0/bits/allocator.h:creating 'allocator.h.gcov' File '/usr/include/c++/4.0.0/bits/list.tcc' Lines executed:0.00% of 16 /usr/include/c++/4.0.0/bits/list.tcc:creating 'list.tcc.gcov' lrem@mbp:WaterWorld.dir $ less iworld.cpp.gcov
Linijki nigdy nie wykonane to te oznaczone #####
Dyskusja?
