本文主要是介绍SSM项目之商铺系统-各层的测试(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们针对Area(地区)表进行测试。我们取出area表中的所有信息,通过juint来完成测试
第一步:给数据表添加数据。
我们测试查询语句:
select * from tb_area
ORDER BY priority DESC //降序输出area表中所有信息
第二步:写dao层接口。
public interface AreaDao {//列出区域列表List<Area> queryArea();
}
配置mapper映射文件 :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="storepro.dao.AreaDao"><select id="queryArea" resultType="area">select * from tb_areaORDER BY priority DESC</select>
</mapper>
注意namespace必须相同(经过测试mapper文件不必和dao层接口名称相同
我们测试要使用junit,我们先看下怎么使用。
这是junit的包我们看下BaseTest
//告诉spring通过SpringJUnit4ClassRunner.class来跑
@RunWith(SpringJUnit4ClassRunner.class)
//告诉junit spring 配置文件的位置
@ContextConfiguration({"classpath:spring/spring-dao.xml","classpath:spring/spring-service.xml"})//不能使用通配符,测试了
public class BaseTest {}
这个类中使用了两个注解,只要就是完成在测试前对spring的装配,这样完成后,我们要测试的dao层等类只需要继承这个类就能完成这些操作。
dao层的测试:
1.建立dao层测试类
//继承后每次加载都会加载spring-dao的配置文件
public class AreaDaoTest extends BaseTest{@Autowiredprivate AreaDao areaDao;@Testpublic void testQueryArea(){List<Area> areaList=areaDao.queryArea();assertEquals(2,areaList.size());}}
我们通过mapper文件和dao层接口实现了调用queryArea方法得到了List,我们通过判断长度是否为2来确定dao层是否正确
注意:我们看这句
@Autowired
private AreaDao areaDao;
我们之前并没有装配这个类,但是现在却直接可以自动装配,这是通过mapper映射的方式,直接将dao层接口实现了,并且可以直接使用注解装配
引出:除了上面那种情况,如果一个类中有另一个类属性,那么被包含的属性必须被装配,不管使用注解还是xml方式。
测试结果:正确说明我们的dao层没任何问题
测试service层:
1.先写出service层的接口和接口实现
接口:
public interface AreaService {//获取Area的列表List<Area> getAreaList();
}
接口实现:
@Service
public class AreaServiceImpl implements AreaService {@Autowired//这里的areaDao由mapper文件自动生成对象并注入ioc容器,所以不需要在AreaDao中注解它为beanprivate AreaDao areaDao;@Overridepublic List<Area> getAreaList() {return areaDao.queryArea();}
}
junit测试:
public class AreaServiceTest extends BaseTest {@Autowiredprivate AreaService areaService;@Testpublic void testGetArealList(){List<Area> areaList =areaService.getAreaList();Assert.assertEquals("西苑",areaList.get(0).getAreaName());}
}
我们通过判断列表第一个字符的名字是不是等于我们想要的。
注意:
@Autowired
private AreaService areaService;
这句的装配使用的是接口类型却使用了实现类AreaServiceImpl的方法,因为我们在实现类的上面加了@Servcie注解,这样可以直接使用接口类型。(不止service,@controller等也可以)
web层测试:
@Controller//注解装配它
@RequestMapping("/superadmin")//注解声明这个类的url根目录
public class AreaController {@Autowiredprivate AreaService areaService;@RequestMapping(value = "/listarea", method = RequestMethod.GET)//声明这个类的这个方法的子目录和请求数据方法@ResponseBody//通过这个注解声明返回类型为jsonprivate Map<String, Object> listArea() {Map<String, Object> modelMap = new HashMap<String, Object>();List<Area> list = new ArrayList<Area>();list = areaService.getAreaList();try {modelMap.put("rows", list);modelMap.put("totals", list.size());} catch (Exception e) {modelMap.put("success", false);modelMap.put("errMsg", e.toString());e.printStackTrace();}return modelMap;}
}
我们打开tomcat输入相应的网址。
结果如图:成功
这篇关于SSM项目之商铺系统-各层的测试(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!