SpringBoot如何进行单元测试?

因为SpringBoot Web启动器未提供与测试相关的Jar包,比如说:Junit等测试环境,所以我们需要在进行配置。

第一步

pop.xml里面 添加相关依赖的配置:

 
 
      org.springframework.boot
      spring-boot-starter-test 
 

第二步

编写我们的dao层和业务层代码:

比如在我们的Dao层:

public interface UserService {
	int addUser(User user);
	List 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 queryUserAllList() {
		List 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 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("插入失败");
		}

	}
}

最终运行结果

SpringBoot如何进行单元测试?_第1张图片

但是值得我们要去注意的是:
需要在我们的测试类里面添加RunWidth和SpringBootTest注解

RunWith需要制定一个SpringJUnit4ClassRunnner.class的启动器,以junit进行测试,目的是让 junit 与 spring 环境进行整

另外要加上**@SpringBootTest**,指定当前是SpringBot的测试类,并且加载启动器类UserApp并启动。

你可能感兴趣的:(Java,web)