Review aplikacji sieciowej Projecty

0

Witam,
jestem w trakcie tworzenia aplikacji w Javie do zarządzania projektami. Chciałbym jakoś poukładać sobie ten Spring i poznane technologie. Aplikacja może przydać się mi lub komuś w przyszłości. Jest to mój pierwszy większy projekt, więc chciałbym zaczerpnąć jakichś opinii, co jest do poprawy. Mam uczucie, że coś robię w sposób niewłaściwy, czy niepoprawny. Nigdy nie pracowałem jako programista, wszelką moją wiedzę czerpię z książek, dokumentacji, tutoriali, więc zapewne coś ważnego mogło mi umknąć. Niestety nadal sądzę, że moja wiedza jest zbyt skromna, mimo że programowania uczę się już od 4 lat. Po napisaniu matury chciałbym znaleźć jakąś wakacyjną pracę, pomimo braku doświadczenia chciałbym mieć, chociaż kilka projektów.
Przy okazji mam pytania związane z pisaniem testów:

  1. Jak dokładnie trzeba testować aplikacje? Rozumiem, że zapewne najlepiej, żeby testy pokrywały cały kod? No ale przecież takie pokrycie będzie bardzo pracochłonne i czasochłonne?
  2. Przy testowaniu sieciowych aplikacji sieciowych, wystarczy mi przetestowanie czy nastąpił prawidłowy redirect na danym typie danych? Czy powinienem testować jednostkowo każdą metodę po kolei?

Link:
https://github.com/marcinadd/projecty-web

0
  1. ładnie, że jest README ;)
    Co do testów:
  2. Nie testujesz kodu tylko zachowanie. Imo bardziej warto patrzeć na to ile z "zachowań" aplikacji masz pokryte, a nie ile fizycznie linijek kodu. Jest to czasochłonne, ale nie aż tak jak się wydaje na początku ;)
  3. To zależy. Generalnie najlpepiej napisać aplikacje tak, żeby jej logika biznesowa, core, był niezależny od tego gdzie jest odpalany, tz. czy jest wrzucony w springa z restem czy jako jakiś program konsolowy.

Dalej:
3. Poczytaj o podziale pakietów per feature a nie per layer. (zamiast trzymać wszystkie kontrolery razem, serwisy razem grupuj je po tym co robią)
4. Jeśli masz jedną implementacje to nie potrzebujesz interface ;) (mimo, że pewnie w tutorialu tak mówili)
5. Nie używaj @Autowired na polach a jeśli w ogole to na konstruktorach
6. Zamiast sprawdzać czy coś jest null, repository może zwracać Optional

0
danek napisał(a):

Co do testów:

  1. Nie testujesz kodu tylko zachowanie. Imo bardziej warto patrzeć na to ile z "zachowań" aplikacji masz pokryte, a nie ile fizycznie linijek kodu. Jest to czasochłonne, ale nie aż tak jak się wydaje na początku ;)
  2. To zależy. Generalnie najlpepiej napisać aplikacje tak, żeby jej logika biznesowa, core, był niezależny od tego gdzie jest odpalany, tz. czy jest wrzucony w springa z restem czy jako jakiś program konsolowy.

Wracając do tych testów. W jaki sposób testować tą aplikację poprawnie? Przecież chyba nie ma sensu pisać testów, które sprawdzają czy repozytorium działa prawidłowo, bo po co testować springa? Jednak zdaje mi się, że warto już przetestować serwisy. Czy lepiej zrobić mocka na repository i testować serwisy (tylko jak sprawdzać czy dostajemy poprawne dane do testowania)? Mój drugi pomysł to użycie jakiejś In-Memory Database typu H2 i testowania aplikacji w całości. Tylko na Internecie znowu widzę, że takie testy w zasadzie nie odzwierciedlają zachowania na prawdziwej bazie danych.

0

A czy Twój program coś robi? Ma jakąś logikę,? Jeśli tak to ją przetestuj.
Albo możesz użyć in-memory bazy albo możesz napisać swoją implementacje springowych repository która działa na hashMapie ;)
Ja przykładowo u siebie w części biznesowej nie korzystam bezpośrednio z interface springa tylko swoich
Dzięki temu do testów używam implementacji w pamięci a podczas normalnego działania normalnej

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