Wątek przeniesiony 2016-10-08 01:08 z Off-Topic przez somekind.

Czy piszecie testy dla śmiesznie prostych klas?

0

Powiedzmy mamy taki kod, co z nim robicie? Piszecie test, czy olewacie?

class SystemIntegrationMenuTab
{
    /** @var string */
    private $url;
    /** @var string */
    private $identifier;

    public function __construct($url, $identifier) {
        $this->url = $url;
        $this->identifier = $identifier;
    }

    public function getUrl() {
        return $this->url;
    }

    public function getIdentifier() {
        return $this->identifier;
    }
}

Ja jak robię taką klasę to olewam test, bo moim zdaniem nic nie wnosi. Dopiero jak do klasy dojdzie jakaś logika to tworzę testcase'a (jeżeli nigdy nie będzie logiki to klasa jest forever untested).

7

imo testy powinny niesc ze soba jakas wartosc.

Nie widze potrzeby pisania testow dla samej idei pisania testow. Jezeli nie ma logiki ktorej mozna testowac to czegos takiego nie testuje

1

To nie ma sensu.
Poprawność tego kodu można stwierdzić w kilkanaście sekund. Jeśli gdzieś jest głupi błąd (np. pola zamienione) to wyjdzie na jaw tam, gdzie klasa jest użyta - i tam test już by się przydał.

0

Może się opisałem problem, głównie chciałem spytać jak ustalacie jak prosta musi być klasa żeby test był niepotrzebny? Jak mam tylko konkatenację stringów to też olewam, ale gdzie macie limit?

4

Zasada w TDD jest taka, że kod który nie jest wymagany przez testy nie powinien w ogóle istnieć. Metody nie muszą być testowane bezpośrednio, ale powinny być w ogóle wykonane podczas testów. Nie wszystko jest też sens testować testami jednostkowymi - np kodu, który wywołuje java.lang.System.exit(int). Taki kod powinien być pokryty w innych rodzajach testów.

0

http://practicalunittesting.com/btgt.php

Co do zasady to testuję tylko publiczne metody które coś ciekawego robią, oraz funkcje(bez efektów ubocznych), bo testy są banalne, a zawsze to jakaś dodatkowa informacja.

3

imo nie ma sensu testowania takich klas, szkoda czasu i energii, no chyba ze daja ci premie od pokrycia kodu testami ;)
osobiscie pisze testy jednostkowe praktycznie wylacznie do bardziej skomplikowanych algorytmow, reszta jest sprawdzana przez testy integracyjne.

1

@TomRiddle przed napisaniem testu zadaj sobie pytanie co chcę tutaj sprawdzić/przetestować. Bo w twoim kodzie nie ma nic ponad konstrukcje języka. Chcesz przetestować czy return x zwróci x? :) No chyba że masz kasę na 17 parametrów konstruktora, wszystkie tego samego typu i chcesz się upewnić ze dobrze przypisujesz parametry do pól, ale wtedy testy są raczej twoim najmniejszym zmartwieniem ;)

1

Dla języka silnie typowanego (Java, C++) nie ma sensu, bo kompilator wyłapie wszystkie pomyłki w geterach / seterach.
Dla PHP-a możliwe że bym zrobił jeden test.

Testy oprócz testowania logiki biznesowej pełnią też funkcję dokumentacyjną.

5

Jest jedna, bajecznie prosta zasada:
NIGDY nie testuj klas, metod itp. :O!

Jeśli testujesz to tylko funkcjonalności - np. metoda pracownikMiesiaca ma zwracać pracowanika miesiąca (czyli jak podam takie dane to zwrócić ma Jurka) -> Test. Jak podam pusty plik - to ma obrazić mojego kota ->Test. W ramach pracy nad tą metodą możesz schodzić niżej (podmoduły) i testować : jak podam taki plik - to ma odczytac takie nazwiska ->Test.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0