DockerおよびYandexクラウドでのSpringBootのユニットテスト

こんにちは。





私の名前はEvgenyFrolikovです。AlfaStrakhovanieの開発者です。





AlfaStrakhovanieでのプロジェクトの作業中に、マイクロサービスに関するプロジェクトを作成していますが、「マイクロサービス」の1つが大幅に成長していることがわかりました(ただし、それでもモノリスからはほど遠いです:))。その後、雲に「移動」し始めるまで、私たちはとても幸せに暮らし、そして冒険が始まりました。





この動きは開発チームにとって特に印象的ではなく、ポートなどに関するDevOpsからの質問だけがありました。テストベンチに何かが落ちたときに他のチームへの依存を取り除くために、すべての統合テストを切り取ったことに注意してください。しかし、「魔法」はJUnitテストで発生し始めました。つまり、テストは失敗し始めました。この問題が変更を計算するためのブロッカーになるまで、彼らは幻影に陥り、予想外に、当面はリトレイムパイプラインで処理されました。





テスト1実行
テスト1実行

retraem





テスト2の起動
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