Testing

Project : Github

Unit Testing , Integration Testing and Functional Testing

0. Proyekteki butun classlari test etmek , yeni konkret olaraq db ile ishleyen classlari test etmek Unit Testing adlanir. Yeni Proyektdeki butun komponentler bir biri ile duzgun ishleye bilirmi ? Meselen UserServiceImpl istifade olunursa ve daxilinde UserDataInter obyekti varsa ve esl data ile ishlemirse, bu Unit Testing adlanir.

1. Integration Testing - Unit Testingdir. Sadece burada esl data ile ishleyir.
Lazim olan annotationlar  :
@RunWith - Spring Context i ishe salir
@SpringBootTest
@DataJpaTest - Test muhitinde DB ya qoshulmagimiza imkan yaradir
Autowired istifade olunur.

2. Functional Testing api uchun yazilmish testing sayilir. Meselen yazilan api uchun bir client tool yazilir ve sorgularla muraciet olunaraq neticeler muqayise olunur.

TDD - Test Driven Development

Testler yazilandan sonra uygun servis ve ya classlar yazilir

BDD - Behaviour Driven Development

Koddan anlayishi olmayan bir adamin basha dushmesi uchun istifade olunan test yazilma metodu
 
Code Under Test

Yeni hal hazirda test altinda olan application nezerde tutulur. 

Code Covarage

Ola biler ki, test etdiyimiz zaman metodun tam ishlemesini test ede bilmeyek. Bunu tam ehate etmek lazimdir. Bu termin Code Covarage adlanir

InjectMock 

Bu annotation hal hazirda test etdiyimiz classinin obyektini yaradir. Meselen
UserServiceImpl

Mock

Tutaq ki UserDataInter in cagrilmasini simulasiya edirik. O metod cagrilsa bele eslinde bazaya muraciet olunmur, yaratdigimiz list ve ya her hansi datani geriye return edirik.

Static metodu Mock elemek uchun PowerMock dan istifade olunur.

Spy

Spy real obyekt yaradir
Mock annotation ile butun class i mock elemek olur, amma spy vasitesile ile class daxilinde lazim olan hisseleri mock ede bilerik. Behaviour verir metodlara.

Popular posts from this blog

Validation for AZ phone numbers with RegEx in Java

Java necə işləyir, kod nədir ?

@Transactional annotation haqqinda. Cascade istifade olunmasi