需要的依赖去下面这个地址看一下,里面也有什么样的叫单元测试的链接
spring boot 做controller层的单元测试
一、 一个demo
测试用例:
@RunWith(SpringJUnit4ClassRunner.class)
public class FirstServiceTest {
@Mock
FirstDao firstDao;
//上面mock的数据需要注入到哪里
@InjectMocks
FirstService firstService=new FirstServiceImpl();
@Test
public void getUserTest(){
//准备mock返回的数据
User user = new User();
user.setId(1L);
user.setName("孔超");
user.setAge("16");
//mock服务或者类中的某个方法,当参数是什么时,返回值是什么
Mockito.when(firstDao.getUser(1L)).thenReturn(user);
//执行单元测试逻辑
User result = firstService.getUser(1L);
//断言
Assert.assertEquals("孔超", result.getName());
}
}
服务实现
@Service("firstService")
public class FirstServiceImpl implements FirstService {
@Resource
FirstDao firstDao;
@Override
public User getUser(Long id) {
return firstDao.getUser(id);
}
}
二 需要注意的点
@InjectMocks
FirstService firstService=new FirstServiceImpl();
这个服务需要new出来的,如果只是FirstService firstService
,则会报下面的异常
org.mockito.exceptions.base.MockitoException:
Cannot instantiate @InjectMocks field named 'firstService'! Cause: the type 'FirstService' is an interface.
You haven't provided the instance at field declaration so I tried to construct the instance.
Examples of correct usage of @InjectMocks:
@InjectMocks Service service = new Service();
@InjectMocks Service service;
//and... don't forget about some @Mocks for injection :)