こんにちは。
私の名前はEvgenyFrolikovです。AlfaStrakhovanieの開発者です。
AlfaStrakhovanieでのプロジェクトの作業中に、マイクロサービスに関するプロジェクトを作成していますが、「マイクロサービス」の1つが大幅に成長していることがわかりました(ただし、それでもモノリスからはほど遠いです:))。その後、雲に「移動」し始めるまで、私たちはとても幸せに暮らし、そして冒険が始まりました。
この動きは開発チームにとって特に印象的ではなく、ポートなどに関するDevOpsからの質問だけがありました。テストベンチに何かが落ちたときに他のチームへの依存を取り除くために、すべての統合テストを切り取ったことに注意してください。しかし、「魔法」はJUnitテストで発生し始めました。つまり、テストは失敗し始めました。この問題が変更を計算するためのブロッカーになるまで、彼らは幻影に陥り、予想外に、当面はリトレイムパイプラインで処理されました。
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;
"".
:
( )
: