Srping注入bean与使用Mockito区别
总结:
- Testng 通过Spring注入bean需要添加注解:@SpringBootTest,并继承AbstractTestNGSpringContextTests
- Junit 5 通过Spring注入bean只需添加注解:@SpringBootTest
- Testng 使用Mockito需要添加注解:@TestExecutionListeners(MockitoTestExecutionListener.class)
- Junit 5 使用Mockito需要添加注解:@ExtendWith(SpringExtension.class)
Junit 5 示例代码
package com.douyin.game.demo;
import com.douyin.game.dao.RankDao;
import com.douyin.game.model.Rank;
import com.douyin.game.service.DouyinGameRankService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit.jupiter.SpringExtension;
/**
* Junit使用Mockit只需要增加注解:@ExtendWith(SpringExtension.class)
* Junit使用Spring注入只需要添加注解:@SpringBootTest
*/
@ExtendWith(SpringExtension.class)
@SpringBootTest
@Slf4j
public class JunitTest {
@MockBean
private RankDao rankDao;
@Autowired
private DouyinGameRankService douyinGameRankServiceMock;
@Test
public void testMockito(){
Rank rank = new Rank();
rank.setId(1L);
rank.setLiveUserName("测试user");
rank.setRoomId("测试roomId");
Mockito.when(rankDao.getRank(1L)).thenReturn(rank);
log.debug(String.valueOf(douyinGameRankServiceMock.getRank(1L)));
}
}
Testng示例代码
package com.douyin.game.demo;
import com.douyin.game.dao.RankDao;
import com.douyin.game.model.Rank;
import com.douyin.game.service.DouyinGameRankService;
import lombok.extern.slf4j.Slf4j;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;
/**
* Testng无法使用注解:@ExtendWith(SpringExtension.class)
* Test使用Mockito需要添加注解:@TestExecutionListeners(MockitoTestExecutionListener.class)
* Testng使用Spring注入Bean需要添加注解:@SpringBootTest,并且同时继承:AbstractTestNGSpringContextTests
*/
//@ExtendWith(SpringExtension.class)
@Slf4j
@TestExecutionListeners(MockitoTestExecutionListener.class)
@SpringBootTest
public class TestngTest extends AbstractTestNGSpringContextTests {
@MockBean
private RankDao rankDao;
@Autowired
private DouyinGameRankService douyinGameRankServiceMock;
@Test(groups = "demo")
public void testMockito() {
Rank rank = new Rank();
rank.setId(1L);
rank.setLiveUserName("测试user");
rank.setRoomId("测试roomId");
Mockito.when(rankDao.getRank(1L)).thenReturn(rank);
log.debug(String.valueOf(douyinGameRankServiceMock.getRank(1L)));
}
}