-
Jak realizować testowanie, gdy metoda obraca sporymi pakietami danych? Czy w przypadku testowym stworzyć minimalny obraz kilku kolekcji, które są potrzebne? (nawet jeśli potrzeba na to z 20-30linii kodu?) Nie da się chyba uniknąć takich sytuacji?
-
Metody robiące robotę pomocniczą dla metod publicznych zwykle oznaczam jako private. Pojawia się wtedy problem z testowaniem tych metod. Generalnie samo testowanie metody publicznej testuje też te prywatne, ale bardziej zasadne byłoby testowanie tych metod odrębnie (co ułatwia też szukanie ewentualnych błędów). Na jednej z rekrutacji zjechano mnie za to, że jedną z metod zrobiłem publiczną by móc ją testowować, a wcale nie było silnych przesłanego by musiałą być private.
-
Czy każda metoda powinna absolutnie coś zwracać? Czy akceptowalne są metody które zmieniają stan obiektu (wartości pola prywatne), a klasa (obiekt) posiada odrębne metody zapewniają dostęp do tych pół? Utrudnia to testowanie (choć nie uniemożliwia), ale w pewnych okolicznościach funkcjonalnych pasują mi bardziej takie rozwiązania.
-
Jak organizujecie sobie kod aplikacji w pakietach? Staram się rozdzielać główne klasy, logikę biznesową i klasy związane z danymi, ale już przy kilkunastu klasach mam wrażenie, że robi się bałagan. Przy aplikacjach webowych springa problem znika, bo tam w zasadzie wszystko się samoorganizuje, ale po dodaniu rozbudowanej logiki biznesowej też robi się bałagan.
-
W jakich okolicznościach uzasadnione jest używanie interfejsów (poza oczywistymi gdy chodzi o obiekty polimorficzne). Wiem, że niektórzy zalecają rozpoczęcie prac nad aplikacją od rozpisania interfejsów
-
Na koniec pytanie konkretne ;) Mam prostą aplikację Spring-Boot. W głównym pakiecie mam klasę startową z "SpringApplication.run(Application.class);", jest to też klasa konfiguracyjna. Aplikacja korzysta z automatycznych repozytoriów Spring Data JPA. Niestety wszystko mi działa tylko jeśli klasy encji i interfejsy repozytoriów są w tym samym pakiecie. Teoretycznie powinno wystarczyć dodanie adnotacji:
@EnableJpaRepositories(basePackages = "repository")
, ale nie działą. Próbowałem także z @EntityScan, bez poprawy.
Gdzie mogę robić coś źle, bo nie wierzę, że nie da się wyrzucić klas związanych z bazami danych do innego pakietu niż ten z klasą konfiguracyjną.
Z góry dzięki za pomoc. Będę wdzięczny za odpowiedzi lub wskazówki choć do jednoego pytania ;)
Tak z ciekawości ;) Z jakich źródeł uczyliście się tego co w punktach 1-5 ?