2012-06-12 12 views
5

Zacząłem pisać aplikację JavaScript jako osobisty projekt. Mam nadzieję nauczyć się i używać testów jednostkowych dla tego projektu. Nie mam dużego doświadczenia w pisaniu testów jednostkowych, ale przeczytałem, że Jasmine będzie dobrą biblioteką, która pomoże mi to osiągnąć.Tworzenie JavaScript - Kiedy powinienem rozpocząć wykonywanie testów jednostkowych?

Powiedziawszy to, byłem nieco nadgorliwy w moim początkowym spree kodowaniu. Wpadłem na pomysł i uciekłem z nim. W związku z tym struktura mojego wniosku była i nadal nie jest tak dobra, jak wolałabym. To doprowadziło mnie na ścieżkę wielu, dużych refaktorów. Przekonałem się, że refaktoryzacja w słabo napisanym języku sprawia, że ​​jestem szczególnie podatny na powtarzanie błędów.

Fakt, że muszę wrócić i zaadresować błędy, które wprowadziłem ponownie, sprawia, że ​​tęsknię za testami jednostkowymi. W przeciwieństwie do tego fakt, że tak bardzo przerabiam fundament mojej bazy kodowej, nadal powoduje, że się waham. Nie chcę tworzyć testów jednostkowych dla mojego projektu, aby następnie zdecydować, że konieczna jest dalsza restrukturyzacja (która spowoduje, że moje testy przestaną odpowiadać "poprawieniu błędu").

Czy to jest wspólna sprawa? Czuję, że będzie moment, w którym moja "fundacja" będzie na tyle stabilna, aby pisać testy na to ... ale to sprawia, że ​​testy brzmią mniej atrakcyjnie.

+2

Uważam, że to należy do [programmers.se]. – zzzzBov

Odpowiedz

4

Zastanowiłbym się, czy traktować obecną bazę kodów jako "eksperymentalną" lub "prototyp" - jak w, coś, co w większości wypadków odrzucisz.

Jeśli planujesz refakturować swoją bazę kodów, dobrym pomysłem byłoby wprowadzenie testów jednostkowych przed refaktoryzacją lub za pomocą refaktoryzowanego kodu.

Korzyści płynące z pisania testów dla aktualnej bazy kodów są dość oczywiste: Można uruchomić bazę kodów refaktoryzacji, aby sprawdzić ich funkcjonalność. Prawdopodobnie będziesz musiał zrestrukturyzować swoje testy również podczas refaktoryzacji, ale to normalne.

Nie powinieneś usuwać ich podczas przepisywania testów. Staraj się, aby wszystkie końcowe twierdzenia w każdym teście były takie same, zastępując sposób, w jaki test w inny sposób działa. W ten sposób powinieneś być w stanie śledzić, co testujesz lepiej, i że nowa funkcjonalność nadal wykonuje to samo zadanie.

Oczywiście, jeśli napisałeś swój oryginalny kod w stylu innym niż OO, może być trudno przetestować go dobrze. W takim przypadku proponuję albo napisać testy wyższego poziomu (testy funkcjonalne) dla oryginalnego kodu, albo napisać refaktoryzowany kod przy użyciu podejścia typu TDD.

Za pomocą testów funkcjonalnych można zlecać testowanie głównej funkcjonalności aplikacji. Nie będziesz miał tak drobnoziarnistych testów jak przy testach jednostkowych, ale możesz napisać testy łatwiej i nie będziesz musiał ich modyfikować w końcu. Do tego celu można użyć narzędzia takiego jak Selenium.

Dzięki podejściu TDD prawdopodobnie miałbyś najmniej pracy. Zapewnisz dobre pokrycie testowe dla nowo napisanego kodu, ale będziesz musiał ręcznie zweryfikować kod działa tak samo jak stary.

Powiązane problemy