Prueba unitaria Spring Boot en Docker y Yandex Cloud

Hola.





Mi nombre es Evgeny Frolikov, soy desarrollador en AlfaStrakhovanie





En el curso del trabajo en un proyecto en AlfaStrakhovanie, estamos escribiendo un proyecto sobre microservicios y result贸 que uno de los "microservicios" ha crecido enormemente (pero todav铆a est谩 lejos del monolito :)). Vivimos tan felices para siempre, hasta que comenzamos a "movernos" hacia la nube, y entonces comenz贸 la aventura.





El movimiento no fue particularmente memorable para el equipo de desarrollo, solo con preguntas de DevOps sobre puertos, etc. Tenga en cuenta que eliminamos todas las pruebas de integraci贸n para deshacernos de la dependencia de otros equipos cuando algo cae en sus bancos de pruebas. Pero la "magia" comenz贸 a suceder en las pruebas de JUnit, es decir, las pruebas comenzaron a fallar. Cayeron fantasmas e impredeciblemente, por el momento se trat贸 con una tuber铆a de retraem, hasta que este problema se convirti贸 en un bloqueador para calcular cambios.





prueba 1 carrera
prueba 1 carrera

retraem





prueba 2 lanzamiento
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