Bawię się w Test-Driven Development.

Załóżmy, że chcę stworzyć nowy bardzo rozbudowany feature w moim projekcie.

Feature będzie składał się z kilku/kilkunastu klas + jednej głównej (np. SomethingService), która będzie operowała na obiektach z tych kilkunastu klas.

W
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W takim przypadku mam najpierw stworzyć testy dla tej głównej klasy, czy raczej zacząc od testowania tych mniejszych i dopiero na końcu je zmockować i stworzyć testy dla SomethingService?


@kot1401: co to za TDD skoro już klasy masz, a dopiero teraz myślisz jak rozpisać testy ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@kot1401: wygląda to mniej więcej tak - najpierw piszesz testy funkcjonalne, czyli to co może zrobić użytkownik końcowy. Przykładowo - Adaś wchodzi na wypok.pl, klika zaloguj, gdzie widzi dwa pola formularza, po kliknięciu zostaje zalogowany i powitany wiadomością "Cześć Adaś!"

Wchodzisz na wypok.pl - nie działa, piszesz więc test jednostkowy sprawdzający czy '/' zwraca status 200. Nie zwraca, robisz więc tak długo przy projekcie aż zwróci poprawny status.

Następnie Adaś powinienen kliknąć
  • Odpowiedz
@kot1401: Testowalne jedynie funkcjonalnie – tzn, żeby móc przetestować swój kod musisz mieć pewność, że klasa

App
działa poprawnie.

Do testowania
  • Odpowiedz
@normanos: Liczyłem na to, że może któryś z doświadczonych Mirków będzie mi w stanie odpowiedzieć. Składnia wydaje się być podobna. Dodatkowo jak zwykle pokazano najprostszy z możliwych przypadków: metody zwracają typy proste. Chociaż jeden przykład ze zwracanym obiektem by się przydał...
  • Odpowiedz
Taaadaam, oto mój pierwszy test jednostkowy w życiu:

class GreatCircleDistanceTest extends TestCase {

public function testDistance()

{
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kot1401: Źle robisz, że chcesz do takich rzeczy wykorzystywać globalne funkcje. Dopisz więcej przypadków, żeby mieć pewność, że działa poprawnie i utwórz sobie klasę.
  • Odpowiedz
#phpspec vs #phpunit – porównanie podobno bez sensu, bo jedno narzędzie służy do "tworzenia" (designu) kodu, a drugie do jego "testowania" (weryfikowania poprawności działania).

Pytanko: skoro to są narzędzia do dwóch innych rzeczy, jak powinny się uzupełniać?

Macie jakieś ciekawe linki pod ręką? Ewentualnie jak praktykujecie? Bo mam wrażenie, że wiele projektów, w których zaczęło używać phpspeca, przestało używać phpunita zupełnie…

#programowanie #testowanieoprogramowania #
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mk4s: Ogólna opinia jest taka, że PHPSpec de facto zastępuje PHPUnita.

To znaczy, jak ma się dobrą specyfikację, to testy stają się niepotrzebne (bo specyfikacja przewiduje zachowanie kodu).

Kiedy więc użyć którego narzędzia? PHPSpec polecają do nowych projektów i całkowitego TDD (najpierw specyfikacja/test, potem kod, nigdy więcej kodu niż przewiduje
  • Odpowiedz
Mirasy, udało się komuś z was podpiąć xdebug i phpunit w jedno? Tzn. żebym podczas wywołania testów mógł sprawdziać breakpointy i wartości zmiennych? Walczę z tym w Eclipsie, używałem nawet pluginu makegood, ale zdaje się nie działać pod windowsem, a format najwcześniej za tydzień. #helplox

  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Atomic_Cookie: jasne ,że tak....wiesz...ja żyje ze swojej prqcy...phpstorm kosztował mnie kilka h mojej pracy...idiotyzmem było by sie babrać w Eclipse czy netbeans skoro sa narzędzia do pracy które są niemal idealne i maksymalizuja moją wydajność i nie sprawiają ,że wyrywam sobie włosy z głowy :D
  • Odpowiedz
Tutsplus chyba wszyscy znają, ale gdyby ktoś przeoczył, w tym tygodniu pojawił się darmowy kurs będący wprowadzeniem do testowania. Omawiane są:

— testy jednostkowe: #phpunit

— testy funkcjonalne: #codeception

  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach