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.
retraem
" " .
( ) . ( , c Sonar).
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class ContractStatusServiceTest {
@Autowired
private ContractStatusService contractStatusService;
@MockBean
private RsaInfoComponent rsaInfoComponent;
@MockBean
private ContractRepository contractRepository;
""
@RunWith(SpringJUnit4ClassRunner.class) - Spring
@SpringBootTest - Spring Boot (, @SpringBootApplication) Spring. SpringBootTest
@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;
"".
:
( )
: