2008-10-21 26 views
9

Moje pytanie jest bardzo istotne dla something asked before, ale potrzebuję kilku praktycznych porad.Dodawanie testów jednostkowych do istniejącego projektu

Mam "Skuteczne działanie ze starszym kodem" w moich rękach i używam porady z książki, tak jak ją czytałem w projekcie, nad którym pracuję. Projekt jest aplikacją C++, która składa się z kilku bibliotek, ale główna część kodu jest kompilowana do pojedynczego pliku wykonywalnego. Używam googletest do dodawania testów jednostkowych do istniejącego kodu, kiedy muszę coś dotknąć.

Mój problem polega na tym, jak skonfigurować proces tworzenia, aby móc tworzyć testy jednostek, ponieważ istnieją dwa różne pliki wykonywalne, które muszą udostępniać kod, a nie mogę wyodrębnić kodu z mojej aplikacji "w fazie testowej". biblioteka. W tej chwili zrobiłem proces kompilacji aplikacji, która przechowuje łącze testów jednostkowych w stosunku do plików obiektowych generowanych w procesie kompilacji głównej aplikacji, ale naprawdę tego nie lubię. Czy są jakieś sugestie?

Odpowiedz

1

Jeśli aplikacja test jest łączenie tylko obiekt pliki, które musi przetestować, a następnie skutecznie już traktujesz je jako bibliotekę, powinno być możliwe grupowanie tych plików obiektów w oddzielną bibliotekę dla aplikacji głównej i testowej. Jeśli nie możesz, nie widzę, że to, co robisz, jest zbyt złe.

Jeśli musisz połączyć inne pliki obiektów, które nie są testowane, to jest to znak zależności, które należy zepsuć, dla których masz idealną książkę. Mamy podobne problemy i korzystamy z systemu podobnego do zaproponowanego przez Vlion

0

Osobiście nadal będę robił tak, jak to robisz lub rozważasz posiadanie skryptu kompilacji, który sprawia, że ​​docelowa aplikacja i jednostka testują w tym samym czasie (dwa wynikające pliki binarne z tego samego kodu). Tak, to pachnie rybą, ale jest bardzo praktyczne.

Pozdrowienia dla Ciebie i powodzenia w testowaniu.

0

Preferuję jeden plik wykonywalny testu na test. Pozwala to na łączenie w czasie łącza, a także pozwala na korzystanie z TDD, ponieważ możesz pracować na jednej jednostce i nie martwić się o resztę kodu.

Ustanawiam biblioteki zależne od wszystkich testów. Mam nadzieję, że oznacza to, że twoje testy są uruchamiane tylko wtedy, gdy kod faktycznie się zmienia.

Jeśli wystąpi błąd, testy przerwie proces budowania we właściwym miejscu.

+0

Dlaczego głosowanie w dół? –

2

będę nakreślić strukturę makefile można użyć:

all: tests executables 

run-tests: tests 
    <commands to run the test suite> 

executables: <file list> 
    <commands to build the files> 

tests: unit-test1 unit-test2 etc 

unit-test1: ,files that are required for your unit-test1> 
    <commands to build unit-test1> 

To jest mniej więcej to, co robię, jako jedyny deweloper w moim projekcie

Powiązane problemy