Po pierwsze, potrzebujesz szkieletu testów jednostkowych. W przeszłości korzystałem z UnitTest ++ i Google Test . Ten pierwszy jest bardzo lekki, a drugi jest bardziej funkcjonalny, ale nieco bardziej kłopotliwy. Dobrze integruje się z Google Mock, jeśli potrzebujesz czegoś takiego. Istnieje oczywiście wiele innych opcji: patrz ta lista (na przykład autor UnitTest ++) i Wikipedia na przykład.
Testowanie jednostkowe polega na pisaniu ukierunkowanych testów w celu zaakcentowania poszczególnych izolowanych niezależnych bitów kodu („jednostek”) w różnych scenariuszach. Chociaż w niektórych przypadkach można przetestować wszystko za pomocą jednostki, zazwyczaj uzyskanie 100% pokrycia nie jest praktyczne, a szczególnie w grach może być dość trudne - można się spierać, czy testowanie przez urządzenie danych wyjściowych renderera jest w jakikolwiek sposób znaczące, użyteczne lub niezależnie od tego „prawdziwy” test jednostkowy.
Ważne jest, aby pamiętać, że wszelkie (automatyczne) testy są lepsze niż żadne (automatyczne) testy. Więc nie powinieneś zbytnio stresować się tym, że twoje testy nie są „prawdziwymi testami jednostkowymi” i być dumnym, że po prostu je masz. Struktury testów jednostkowych są zwykle przydatne do budowania luźniejszych, „niejednostkowych” testów, ponieważ obejmują one funkcjonalność do testów pakowania i jednolitego zgłaszania awarii.
Zachęcam do wskrzeszenia starych testów i wbudowania ich w projekt testowy przy użyciu jednego z dostępnych frameworków - czegoś, co można łatwo uruchamiać od czasu do czasu (lub automatycznie jako część kompilacji wydania lub integracji), który uruchamia wszystkie twoje testy. Napisz nowe testy dla fragmentów kodu, gdy okaże się, że byłyby dla ciebie przydatne, na przykład jeśli odkryjesz subtelny błąd, który mógłbyś wykryć za pomocą testu, możesz dodać taki, aby wychwycić wszelkie regresje, które możesz wprowadzić w przyszłości.
Prawdopodobnie przekonasz się, że jest to głównie twój kod narzędziowy niższego poziomu, który można testować w grach. W porządku - to kod fundamentu, który mógłby zakłócić wiele wyższych warstw, jeśli się zepsuje.
Nie pójdziesz do czyśćca programisty z powodu braku testów dla każdej małej funkcji i logicznej bramki w bazie kodu, więc nie marnuj więcej czasu niż potrzebujesz na pisanie testów. Jeśli musisz się bardziej zastanowić lub poświęcić znacznie więcej czasu na pisanie testów dla modułu, niż pisanie modułu zajęło ci wiele czasu, być może marnujesz swój czas. Testowanie jednostkowe - ogólnie testowanie - jest narzędziem, którego uczysz się odpowiednio używać, aby ci pomóc, a nie obowiązkiem, który musisz wykonać za wszystko.