Testy aplikacji w Spring Boot

Testy aplikacji w Spring Boot
TJ
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 5 lat
  • Postów:35
0

Hej

Najwyższy czas zabrać się za testy. Nigdy tego nie robiłem chociaż już od jakiegoś czasu programuje... Więc mam klasę :

Kopiuj
public class Product {
@Min(20)
@Max(50)
private int cena;

@Size(min = 3, max = 40)
private String nazwa;

@Max(100)
private String kategoria;

//gettery, settery etc.

I teraz chciałem napisać test czy działa mi validacja.

Kopiuj
 @Test
	    public void shouldNotValidateWhenPriceOver50() {
		Product p = new Product();
		p.setCena(1000);

		Set<ConstraintViolation<Product>> violations = validator.validate(p);
	        assertFalse(violations.isEmpty());
	        
	 }

I wszystko ładnie test przeszedł, ale to nie ma sensu, bo validacja zadziałała dla całego obiektu, a nie dla jednego pola. I tutaj moje pytanie.

  1. Jak pisać takie testy? Czy powinienem w takim teście uwzględnić pola **nazwa **oraz kategoria?
  2. Czy jest opcja testowania tylko jednego pola?
  3. Czy lepiej pisać testy, na "assertTrue" czy "assertFalse" (sorki nie wiem jak to inaczej wytłumaczyć)
  4. Ogólne porady dotyczące testowania.

Z góry dzięki

M9
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 6 lat
0

To produkt to jest DTO, które walidujesz jako parametr metody kontrolera Spring MVC?

Testowałem bean validation jednostkowo. Prosta sprawa.

  1. Tworzysz test na przypadek, gdzie wszystko działa.
  2. Potem modyfikujesz go tak, aby wystąpiło co najmniej 1 ConstraintViolationException na każde użycie bean validation na polu.

Napisałbym następujące testy:

  1. shouldPassValidationForCorrectProduct
  2. shouldDetectInvalidPriceBelowMinimum
  3. shouldDetectInvalidPriceAboveMaximum
  4. shouldDetectCategoryAboveMaximum

W pierwszym teście masz 0 constraint violations w Set, w pozostałych chcesz mieć dokładnie 1. I to wszystko. Testy jednostkowe.

Poczytaj se też jak używać Bean Validation dla dowolnych Spring Beans nie tylko w Spring MVC: to działa dla każdego Spring Bean. Adnotacje @Validated i @Valid.

S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

Z porad mam taką żeby pisac testy w Groovym i Spocku a nie JUnicie :P
2 jest taka żeby nazwy metod mówiły o tescie
np. "there should be validator error for too short password"


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
edytowany 1x, ostatnio: scibi92

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.