Pengujian unit Spring Boot di Docker dan cloud Yandex

Halo.





Nama saya Evgeny Frolikov, saya seorang developer di AlfaStrakhovanie





Saat mengerjakan proyek di AlfaStrakhovanie, kami sedang menulis proyek tentang layanan mikro dan ternyata salah satu "layanan mikro" telah berkembang pesat (tetapi masih jauh dari monolit :)). Kami hidup begitu bahagia selamanya, sampai kami mulai "pindah" ke awan, dan kemudian petualangan dimulai.





Langkah tersebut tidak terlalu berkesan bagi tim pengembangan, hanya dengan pertanyaan dari DevOps tentang port, dll. Perhatikan bahwa kami memotong semua tes integrasi untuk menghilangkan ketergantungan pada tim lain ketika sesuatu jatuh di bangku tes mereka. Tapi "keajaiban" mulai terjadi pada tes JUnit, yaitu tes mulai gagal. Mereka jatuh hantu dan tak terduga, untuk sementara itu dirawat dengan pipa retraem, sampai masalah ini menjadi penghambat untuk menghitung perubahan.





uji 1 dijalankan
uji 1 dijalankan

retraem





uji 2 peluncuran
2

" " .





( ) . ( , c Sonar).





@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class ContractStatusServiceTest {
    @Autowired
    private ContractStatusService contractStatusService;
    @MockBean
    private RsaInfoComponent rsaInfoComponent;
    @MockBean
    private ContractRepository contractRepository;
      
      



""





  1. @RunWith(SpringJUnit4ClassRunner.class) - Spring





  2. @SpringBootTest - Spring Boot (, @SpringBootApplication) Spring. SpringBootTest





  3. @Autowired - Bean;





@Autowired , .





.





@RunWith(SpringRunner.class)
@SpringBootTest
@RequiredArgsConstructor
public class  ComponentTestTest {

   // @Autowired
    private final ComponentTest componentTest;
    

      
      



,





1)@RequiredArgsConstructor - Lombok final.





.....





java.lang.Exception: Test class should have exactly one public zero-argument constructor

	at org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor(BlockJUnit4ClassRunner.java:171)
	at org.junit.runners.BlockJUnit4ClassRunner.validateConstructor(BlockJUnit4ClassRunner.java:148)
	at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:127)
	...

      
      



.





, Mock





@RunWith(MockitoJUnitRunner.class)
public class CrossProductServiceTest {
    @InjectMocks
    private CrossProductService crossProductService;
    @Mock
    private KaskoService kaskoService;
    @Mock
    private CrownVirusOfferService crownVirusOfferService;
      
      







  1. @RunWith(MockitoJUnitRunner.class) - Bean , ( )





  2. @Mock -





  3. @InjectMocks - Bean





"".





:





  1. ( )









:
















All Articles