Junit小入门
1.查看你们亲爱的开发大大编写的接口文档,你会和我一样看到如下内容:
/v2/transportRoute/queryList.json GET
点击enter打开对应的controller层代码中。确认当前代码就是需要测试的接口controller层。
3.注意查看当前的文件,如下:
@Controller @RequestMapping("/v2/transportRoute/") public class CarrierContractRouteController { @Autowired private TmsContractRouteAO tmsContractRouteAO; @Autowired private TmsRouteAO tmsRouteAO; //注入TmsRouteAO这个接口 /** * 列表 * @param form * @param bindingResult * @return */ @RolePermission(roles = UserRole.TMS_MANAGER) @ResponseBody @RequestMapping(value = "queryList.json", method = RequestMethod.GET) public BizResult<PageResult<ContractRouteVO>> queryList (@Valid @ModelAttribute TmsRouteListForm form, BindingResult bindingResult) { return tmsContractRouteAO.contractList(form);//返回值是tmsContractRouteAO这个接口中的实现类方法contractList的form值 }
查看return中的是tmsContractRouteAO这个接口,选中“tmsContractRouteAO”按快捷键“commnd+触摸板点击”进入这个接口文档中,如下:
public interface TmsContractRouteAO { /** * 承包路线list * @param form * @return */ BizResult<PageResult<ContractRouteVO>> contractList(TmsRouteListForm form);一般接口文档中只放什么接口什么方法的什么入参,不会放真正的实现逻辑,实现逻辑一般存储于同名不同后缀的impl文件中。
4.继续选中TmsContractRouteAO,点击菜单栏[Navigate]-[Test]——[Create New Test。。。],进入需要自动生成那些接口的单元测试用例页面。如下图:
这里因为我们要对ContractListform这个接口进行单元测试,所以选中这个。点击OK,自动生成对应对单元测试文件。
5.编写对应单元测试如下
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations = {"classpath:spring/spring-ioc.xml"}) public class TmsRouteAOTest { @Autowired private TmsContractRouteAO tmsRouteAO; private static final Gson gson = new Gson();//JSON转换类,将对象转换成json格式的string @Test public void contractList() throws Exception { TmsRouteListForm form = new TmsRouteListForm(); form.setPageSize(10); form.setPageNo(1); form.setTransportType("1"); //1是大板车,2是救援车,99是厂家包邮 form.setRouteStatus("1"); //1正常,2是暂停 form.setStartCityName("安徽省合肥"); form.setDestinationCityName("浙江省杭州"); form.setCarrierName("大头"); BizResult<PageResult<ContractRouteVO>> result = tmsRouteAO.contractList(form); PageResult<ContractRouteVO> pageResult = result.getData(); System.out.print("数据:" + gson.toJson(pageResult.getResult())); Assert.assertTrue(result.isSuccess()); }
(1)@Autowired是注入允许这个单元测试用例需要的接口
(2)@Test是编写单元测试方法的地方
(3)@RunWith、@WebAppConfiguration、@ContextConfiguration是每个单元测试文件都需要加入的注解,具体内容请百度有一堆就不解释了
(4)测试用例第一件事New一个TmsRouteListForm类实例,取名为form,然后根据接口文档或者查看TmsRouteListForm类的真实传参有哪些内容。然后进行参数传入。
(5)参数传入完毕后打印出传出的结果,然后断言判断
(6)世纪测试其他的接口时可能会出现list中套其他list这样的情况,稍后会给出这样的完整代码
(7)允许Junit时可能会报错“Failed to load ApplicationContext”可能是两个情况,将classpath后面加上*号以扩大搜索范围,另外一个情况是当前允许了2个进程,请先关闭正在允许的进行。
(8)小技巧:查看当前文件所在位置:点击左侧的圈里带jia hao