SpringJUnit4ClassRunner+mockito 进程feign接口进行单元测试


1、引入 jar

1 <dependency>
2        <groupId>org.springframework.boot</groupId>
3        <artifactId>spring-boot-starter-test</artifactId>
4        <scope>test</scope>
5 </dependency>

 2、被测试的类

 1 @Service
 2 @CustomLog
 3 @Transactional(rollbackFor = Exception.class)
 4 public class CasMonitorTaskServiceTx {
 5 
 6     @Autowired
 7     private WoMonitorTaskMapper woMonitorTaskMapper;
 8     @Autowired
 9     private WoMonitorRecordMapper woMonitorRecordMapper;
10     @Autowired
11     private SmsSendLogMapper smsSendLogMapper;
12     @Autowired
13     private SmsRecordClient smsRecordClient;
14 
15 
16 
17     public void insertRecordAndSendSms() throws SchedulerException {
18        
19     }
20 }

3、单元测试类

 1 @ContextConfiguration(locations = {"classpath:test-service.xml", "classpath*:spring/root/public-*.xml"})
 2 @RunWith(SpringJUnit4ClassRunner.class)
 3 @Transactional
 4 public class CasMonitorTaskServiceTxTest {
 5 
 7     @Autowired
 8     private CasMonitorTaskServiceTx casMonitorTaskServiceTx;
 9 
10    
11     @MockBean
12     private SmsRecordClient client;
13 
14     @Test
15     public void insertRecordAndSendSms() throws Exception {
16         SmsRecordApi.SendRes res = new SmsRecordApi.SendRes();
17         res.setMessage(Message.builder().ok(SmsRecordApi.SendRes.SendRes_Message.class));
18         Mockito.doReturn(res).when(client).send(any());
19         
20         Long recordId = casMonitorTaskServiceTx.insertRecordAndSendSms();
21         System.out.println(recordId);
22     }
23 
24   
25 }

说明: 

CasMonitorTaskServiceTx类中除 SmsRecordClient之外的 bean 继续使用 spring容器进行加载 只需要mock feign 接口 SmsRecordClient,故在 test类中 mock SmsRecordClient类+注解 @MockBean


 

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/277630.html

(0)
上一篇 2022年7月29日
下一篇 2022年7月29日

相关推荐

发表回复

登录后才能评论