单元测试案例2

景区为了吸引游客,提出优惠政策,需根据淡旺季月份和游客身份计算出缆车乘车费
用,具体规则如下:
乘坐缆车原价为 100 元;
每年的 1 月、2 月、6 月、7 月、8 月、12 月为旺季,乘车费用为原价打 8 折;
- 若游客是学生,再打 7 折,最终优惠票价为 56 元;
- 若游客是教师,再打 8 折,最终优惠票价为 64 元;
- 其他游客,再无折扣,最终优惠票价为 80 元。
每年的 3 月、4 月、5 月、9 月、10 月、11 月为淡季,乘车费用为原价打 6 折;
- 若游客是学生,再打 7 折,最终优惠票价为 42 元;
- 若游客是教师,再打 8 折,最终优惠票价为 48 元;
- 其他游客,再无折扣,最终优惠票价为 60 元。
若月份不是 1~12 月的话,系统则显示月份异常。
【题目描述】
请使用“ 分支覆盖法 ”对被测源代码 LiftTicket 类中的 fareCalculation()方法设计单
元测试用例。并在 LiftTicketTest 类中完成 Java 单元测试代码。
分支覆盖法 :又叫判定覆盖法,是指设计适当数量的测试用例运行被测程序,使得程序中
每个判定语句的真、假分支至少被执行一次。
package cn.lanqiao;

import java.text.DecimalFormat;

/**
 * 	本类主要功能描述:
 * 1、乘坐缆车原价为 100 元。
 * 2、每年的 1 月,2 月,6 月,7 月,8 月,12 月为旺季,乘车费用在原价基础上打8折;若游客是学生,再打7折,最终优惠票价为56元;若游客是教师,再打8折,最终优惠票价为64元;其他游客,再无折扣,最终优惠票价为80元。
 * 3、每年的 3 月,4 月,5 月,9 月,10 月,11 月为淡季,乘车费用在原价基础上打6折;若游客是学生,再打7折,最终优惠票价为42元;若游客是教师,再打8折,最终优惠票价为48元;其他游客,再无折扣,最终优惠票价为60元。
 * 4、若月份不是 1 ~ 12 月的话,系统则显示月份异常。
 */
public class LiftTicket {
    /**
     * 根据月份和游客身份计算出缆车乘车费用
     * @param month 月份
     * @param identity 身份
     * @return 最终票价
     */
    public String fareCalculation(int month, String identity){
        // 原价
        double price = 100;
        if(month == 1 || month == 2 || month == 6 ||month == 7 || month == 8 || month == 12){
            if(identity.equals("学生")){
                price=price * 0.8 * 0.7;
            }else if(identity.equals("教师")){
                price=price * 0.8 * 0.8;
            }else{
                price=price * 0.8;
            }
            return DecimalFormat.getIntegerInstance().format(price); 
            
        }else if(month == 3 || month == 4 || month == 5 || month == 9 || month == 10 || month == 11){
            if(identity.equals("学生")){
                price=price * 0.6 * 0.7;
            }else if(identity.equals("教师")){
                price=price * 0.6 * 0.8;
            }else{
                price=price * 0.6;
            }
            return DecimalFormat.getIntegerInstance().format(price);
        }else{
            return "月份异常";
        }
    }
}
package cn.lanqiao.unit;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import cn.lanqiao.LiftTicket;


/**
 * 1. 请使用判定覆盖法对被测源代码 LiftTicket 类中的 fareCalculation 方法设计 7 条单元测试用例。
 * 2. 请在下方 LiftTicketTest 类中填写单元测试代码内容。
 * 3. 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert 。
 */
public class LiftTicketTest {

    // 声明被测类
    private LiftTicket ticket;

    @Before
    public void setUp(){
        // 创建被测类实例
        ticket = new LiftTicket();
    }

    @After
    public void tearDown(){
        // 释放被测类实例
        ticket = null;
    }
    
    @Test
    public void testFareCalculation01(){
        // TODO 请填写单元测试代码
        Assert.assertEquals("56", ticket.fareCalculation(1,"学生"));
        Assert.assertEquals("64", ticket.fareCalculation(1,"教师"));
        Assert.assertEquals("80", ticket.fareCalculation(1,"司机"));
    }
    @Test
    public void testFareCalculation02(){
        // TODO 请填写单元测试代码
    	Assert.assertEquals("42", ticket.fareCalculation(3,"学生"));
        Assert.assertEquals("48", ticket.fareCalculation(3,"教师"));
        Assert.assertEquals("60", ticket.fareCalculation(3,"司机"));
       
    }
    @Test
    public void testFareCalculation03(){
        // TODO 请填写单元测试代码
    	Assert.assertEquals("月份异常", ticket.fareCalculation(14,"司机"));
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值