SpringBoot如何进行单元测试?
·
因为SpringBoot Web启动器未提供与测试相关的Jar包,比如说:Junit等测试环境,所以我们需要在进行配置。
第一步
pop.xml里面 添加相关依赖的配置:
<!-- 添加 junit 环境的 jar 包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
第二步
编写我们的dao层和业务层代码:
比如在我们的Dao层:
public interface UserService {
int addUser(User user);
List<User> queryUserAllList();
User selectOneUserById(int id);
void updateUserInfo(User user);
void deleteUserInfoById(int id);
}
在业务层
@Service
@Transactional
public class UserServiceImpl implements UserService {
//这里需要注入UserMapper的代理对象
@Autowired
private UserMapper userMapper;
@Override
public int addUser(User user) {
if(user == null){
return -1;
}else if(StringUtils.isNullOrEmpty(user.getName())){
return -1;
}
// TODO Auto-generated method stub
this.userMapper.insertUserData(user);
return 0;
}
@Override
public List<User> queryUserAllList() {
List<User> list = this.userMapper.queryUserAllList();
return list;
}
@Override
public User selectOneUserById(int id) {
// TODO Auto-generated method stub
return this.userMapper.selectOneUserById(id);
}
@Override
public void updateUserInfo(User user) {
this.userMapper.updateUserInfo(user);
}
@Override
public void deleteUserInfoById(int id) {
this.userMapper.deleteUserInfoById(id);
}
}
第三步,编写启动类
@MapperScan("com.yuer.ssmc.mapper") //用于spring扫描MyBatids的mapping接口,根据扫描的接口来生成代理对象
@SpringBootApplication
public class UserApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(UserApp.class, args);
}
}
使用 SpringBoot 整合 Junit 做单元测试
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={UserApp.class})
public class AdminServiceTest {
@Autowired
UserService userServiceImpl;
@Test
public void questTest(){
List<User> list = userServiceImpl.queryUserAllList();
for (User user : list) {
System.out.println("姓名:"+user.getName()+" 年龄:" +user.getAge());
}
}
@Test
public void insertTest(){
try {
User user = new User();
user.setName("yuer");
user.setAge(29);
user.setId(10);
userServiceImpl.addUser(user);
System.out.println("插入成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("插入失败");
}
}
}
最终运行结果

但是值得我们要去注意的是:
需要在我们的测试类里面添加RunWidth和SpringBootTest注解
RunWith需要制定一个SpringJUnit4ClassRunnner.class的启动器,以junit进行测试,目的是让 junit 与 spring 环境进行整
另外要加上**@SpringBootTest**,指定当前是SpringBot的测试类,并且加载启动器类UserApp并启动。
更多推荐

所有评论(0)