持续集成之路—服务层的单元测试

发表于:2014-6-23 11:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:xinyuyuanm    来源:51Testing软件测试网采编

分享:
  在完成了数据访问层的单元之后,接下来看如何编写服务层(Service)的单元测试。服务层应该是整个系统中得重中之重,严密的业务逻辑设计保证了系统稳定运行,所以这一层的单元测试也应该占很大比重。虽然一般情况下单元测试应该尽量通过mock剥离依赖,但是由于在当前的项目中数据访问层使用spring-data框架,并没有包含太多的逻辑,因此我就把服务层和数据访问层放在做了一个伪单元测试。
  一、一般逻辑的单元测试。
  这里采用的方式和数据访问层几乎是一样的,主要包含三步:
  1. 通过@DatabaseSetup指定测试用数据集
  2. 执行被测试方法
  3. 通过Dao从数据库中查询数据验证执行结果
  假设要被测试的代码方法是:
@Service
@Transactional(readOnly = true)
public class ShopServiceImpl extends BaseService implements ShopService{
private Logger logger = LoggerFactory.getLogger(ShopServiceImpl.class);
@Transactional(readOnly = false)
public Floor addFloor(String buildingName, int floorNum, String layout) {
//如果已经存在对应的楼层信息,则抛出已经存在的异常信息
Floor floor = floorDao.findByBuildingNameAndFloorNum(buildingName, floorNum);
if (floor != null) {
throw new OnlineShopException(ExceptionCode.Shop_Floor_Existed);
}
//如果不存在对应的商场信息,则添加新的商场
Building building = buildingDao.findByName(buildingName);
if (building == null) {
building = new Building();
building.setName(buildingName);
buildingDao.save(building);
}
//添加并返回楼层信息
floor = new Floor();
floor.setBuilding(building);
floor.setFloorNum(floorNum);
floor.setMap(layout);
floorDao.save(floor);
return floor;
}
}
  其对应的接口是:
  public interface ShopService {
  public Floor addFloor(String buildingName, int floorNum, String layout);
  }
21/212>
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号