Olá.
Meu nome é Evgeny Frolikov, sou desenvolvedor na AlfaStrakhovanie
No decorrer do trabalho em um projeto na AlfaStrakhovanie, estamos escrevendo um projeto sobre microsserviços e descobriu-se que um dos "microsserviços" cresceu muito (mas ainda está longe do monólito :)). Vivemos tão felizes para sempre, até que começamos a "nos mover" para a nuvem, e então a aventura começou.
A mudança não foi particularmente memorável para a equipe de desenvolvimento, apenas com perguntas do DevOps sobre portas, etc. Observe que eliminamos todos os testes de integração para nos livrar da dependência de outras equipes quando algo cai em seus bancos de teste. Mas "mágica" começou a acontecer nos testes JUnit, ou seja, os testes começaram a falhar. Caíam fantasmas e de maneira imprevisível, por enquanto tratava-se de um pipeline de retraem, até que esse problema se tornou um bloqueador para o cálculo das mudanças.
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;
"".
:
( )
: