Czy testy jednostkowe zajmują czas?

Chyba wszyscy zgadzamy się z tym, że dobrze pisać testy jednostkowe. Ale nie wszyscy piszemy – zwłaszcza jeśli nie musimy (czyli np. w hobbistycznych projektach). Powód jest prosty – wydaje nam się, że ich tworzenie zajmuje czas, który można poświęcić na rozwój kodu aplikacji.

A to nie jest prawdą. I w tym wpisie wytłumaczę dlaczego.

Czytaj dalej

Nowy język w projekcie – Kotlin

Każdego prędzej czy później, podczas pracy nad projektem, dopada znużenie. Co wtedy robić? Można zrobić dłuższą przerwę. Jako, że nad aplikacją pracuję po godzinach, wystarczyłoby żebym przez kilkanaście wieczorów, zamiast stać przed komputerem (po 8 godzinach siedzenia w pracy zawodowej, warto popracować w pozycji stojącej), zrobił coś innego – na przykład poszedł na ryby.

Tak się jednak składa, że nie wędkuję. Znalazłem więc jeszcze lepsze rozwiązanie: wpuściłem w mój projekt nieco świeżości w postaci nowego języka programowania – Kotlina.

Czytaj dalej

[Odrobaczanie z TDD] 3. Testy nam powinny pomagać

Jak pisałem w pierwszym poście z cyklu Odrobaczanie z TDD, aplikacja jako całość działała poprawnie, jednak testy wykryły kilka bugów. Ściślej mówiąc, pokazały, że coś jest nie tak, ale źródła problemu trzeba było szukać samodzielnie.

W poprzednim wpisie naprawiłem część problemów, dziś opiszę jak poradziłem sobie z pozostałymi. Przede wszystkim jednak znajdziecie tu informacje o tym jak przerobiłem testy tak, aby precyzyjnie wskazywały źródło problemów.

Czytaj dalej

[Odrobaczanie z TDD] 1. diagnoza

W przedostatnim poście pisałem trochę o interakcjach między obiektami klas SqlTask i DataBase, z których pierwszy reprezentuje zapisane w bazie zadanie do wykonania, a drugi samą bazę, ukrywając przed nami szczegóły dotyczące łączenia się z nią.

Jestem zadowolony z tego jak te interakcje wymyśliłem i zaimplementowałem, a ponadto… to wszystko działa! Włączam aplikację na telefonie i widzę to co wpisałem do bazy. Działa, czyli kod jest poprawny!

Czy na pewno? Nie.

Czytaj dalej

Testy jednostkowe – czyli dlaczego łamanie prawa Demeter boli

Tak jak niedawno zapowiadałem, przerobiłem kod aplikacji na styku klas DataBase i TaskList. W skrócie: teraz cały kod związany z odczytem zadań z bazy jest w tej pierwszej. TaskList więc nie posiada już metody tasks, a podczas wywołania na nim showOn, dzieje się tylko tyle:

@Override
public void showOn(final TaskListView view) {
  for (ITask task : dataBase.getTasks()) {
    task.showOn(view);
  }
}

No i… okazało się, że wciąż robi za dużo. Ale o tym za więcej chwilę.

Czytaj dalej