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.

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;
@RunWith(MockitoJUnitRunner.class) - Bean , ( )
@Mock -
@InjectMocks - Bean
"".
:
( )
: