实验三 Java程序单元测试
一、实验目标
本次实验旨在指导学生搭建单元测试环境,编写单元测试代码,并且掌握在单元测试实施过程中的关键技术与内容。
二、待测软件单元的需求与源代码
假设开发者开发了一个销售系统的“供货折扣计算模块”,该模块的业务逻辑需要满足以下规则:
1) 当客户为批发型企业时,若订货数大于50件且发货距离不超过50公里时,折扣率为15%;若订货数大于50件且发货距离超过50公里时,折扣率为10%。
2) 当客户为非批发型企业时,若订货数大于100件且发货距离不超过50公里时,折扣率为10%;若订货数大于100件且发货距离超过50公里时,折扣率为5%。
3) 其他情况没有折扣,返回0。
给定计算折扣的类的源代码(该代码中植入了一个错误,因此可通过单元测试将其找出)。如下:
package edu.shou; public class DiscountManagement { private Intf_AddressDistance h_dis; public DiscountManagement(Intf_AddressDistance d) { this.h_dis = d; } public int calcDiscount(int customType, int amount, String address) { /** customType: 客户类型: 1-批发型企业 2-非批发型企业 amount:订货数量 address:发货地址 */ int dis = h_dis.calcDistance(address); if (customType==1) { if (amount>50) { if (dis<=50) { System.out.println(“>>>Get Discount 15%”); return 15;
} else { System.out.println(“>>>Get Discount 10%”); return 10; } } } else if (customType==2) { if (amount>90) { if (dis<=50) { System.out.println(“>>>Get Discount 10%”); return 10; } else { System.out.println(“>>>Get Discount 5%”); return 5; } } } return 0; } }
在该源代码中,要通过接口Intf_AddressDistance计算送货的距离。接口的代码如下:
package edu.shou; public interface Intf_AddressDistance { public int calcDistance(String address); }
然而,该接口未被实现,因此,需要为该接口创建装模块,使得针对DiscountManagement进行单元测试时,能够正确执行其中的方法。
三、实验要求
1. 针对给定的待测软件单元的需求规格说明与Java代码,设计测试用例(可设计简单的测试用例);
2. 使用JUnit测试框架编写测试用例代码,并使用JMock工具编写待测软件单元的桩模块。
3. 将包含有测试代码的project打包后上传至网上平台,要求测试文件夹以学生的姓名简拼来命名,例如学生王华可以建立文件夹 testwanghua。在测试代码中以注释的方式标注学生的学号和姓名。
评论0