您现在的位置是:首页 > 伤感句子

蓝桥杯单元测试专项练习Java版(单元测试4)(修正版)

作者:胡椒时间:2024-04-08 08:51:18分类:伤感句子

简介  文章浏览阅读1.5k次,点赞33次,收藏20次。蓝桥杯单元测试专项练习Java版(单元测试4)的做题思路和简单循环遍历_请使用基本路径覆盖法 + 简单循环覆盖法的标准规则,对被测源代码 goods、goodsser

点击全文阅读

关于简单循环覆盖法可以看看这里我的上一个文章http://t.csdnimg.cn/k92fn\

 题目4链接:单元测试专项练习(Java+Python) - 第四题单元测试题目(Java) - 蓝桥云课 (lanqiao.cn)

目录

题目描述

源代码功能

原题:

Datas.java

Goods.java

GoodsService.java

我的解题代码

GoodsServiceTest.java

我的解题思路

1:观察原题代码


题目描述

请使用基本路径覆盖法 + 简单循环覆盖法的标准规则,对被测源代码 Goods、GoodsService 类中的 shoppingCart 方法设计单元测试用例。并在 GoodsServiceTest 类中完成单元测试代码,Datas 类中提供了测试数据。

源代码功能

某管理系统中,其中一个业务逻辑接口中实现了商品管理模块中的购物车功能,现根据输入的集合列表和商品对象两个参数实现了购物车添加功能,实现逻辑如下:

当向购物车添加商品对象时,购物车集合列表不存在,那么系统会创建购物车集合列表,然后向购物车集合中添加商品信息,并返回商品集合列表。当购物车集合对象为空时,可直接添加商品对象至集合列表中,然后返回商品集合列表。当向购物车添加商品对象,而此商品已存在购物车集合对象列表中时,列表中只会对该商品的数量进行叠加,该商品的其他信息不变,完成操作后返回商品集合列表。当向购物车添加的商品对象,并不存在商品集合列表中,则添加到购物车集合列表中,并返回商品集合列表。

原题:

Datas.java

package cn.lanqiao;import java.util.ArrayList;import java.util.List;/** * 测试数据 */public class Datas {    // 声明集合对象    public static List<Goods> list1 = null;    public static List<Goods> list2 = null;    public static List<Goods> list3 = null;    // 提供商品信息    public static Goods g1 = new Goods(1, "手机", "华为", 3000, 2);    public static Goods g2 = new Goods(2, "手机", "oppo", 2800, 2);    public static Goods g3 = new Goods(3, "手机", "小米", 1800, 2);    public static Goods g4 = new Goods(4, "手机", "vivo", 2600, 2);    public static Goods g5 = new Goods(5, "手机", "荣耀", 1300, 2);    public static Goods g6 = new Goods(6, "手机", "华为", 6000, 2);    public static Goods g7 = new Goods(7, "手机", "oppo", 3800, 2);    public static Goods g8 = new Goods(8, "手机", "小米", 2000, 2);    public static Goods g9 = new Goods(9, "手机", "vivo", 3100, 2);    public static Goods g10 = new Goods(10, "手机", "荣耀", 1700, 2);    static {        list2 = new ArrayList<>();        list3 = new ArrayList<>();        list3.add(g1);        list3.add(g2);        list3.add(g3);        list3.add(g4);        list3.add(g5);        list3.add(g6);        list3.add(g7);        list3.add(g8);        list3.add(g9);    }}

Goods.java

package cn.lanqiao;/** * 商品实体类 */public class Goods {    // 商品编号    private int id;    // 商品名称    private String name;    // 商品类别private String type;    // 商品价格private double price;    // 商品数量private int quantity;        /**     * 无参     */    public Goods() {    }    /**     * 全参     * @param id 编号     * @param name 名称     * @param type 类别     * @param price 价格     * @param quantity 数量     */    public Goods(int id, String name, String type, double price, int quantity) {        this.id = id;        this.name = name;        this.type = type;        this.price = price;        this.quantity = quantity;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getType() {        return type;    }    public void setType(String type) {        this.type = type;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    public int getQuantity() {        return quantity;    }    public void setQuantity(int quantity) {        this.quantity = quantity;    }    @Override    public String toString() {        return "Goods [id=" + id + ", name=" + name + ", type=" + type + ", price=" + price + ", quantity=" + quantity + "]";    }}

GoodsService.java

package cn.lanqiao;import java.util.ArrayList;import java.util.List;/** * 商品管理模块业务逻辑类,本类主要功能描述: * 1、当向购物车添加商品对象时,购物车集合列表不存在,那么系统会创建购物车集合列表,然后向购物车集合中添加商品信息,并返回商品集合列表。 * 2、当购物车集合对象为空时,可直接添加商品对象至集合列表中,然后返回商品集合列表。 * 3、当向购物车添加商品对象,而此商品已存在购物车集合对象列表中时,列表中只会对该商品的数量进行叠加,该商品的其他信息不变,完成操作后返回商品集合列表。 * 4、当向购物车添加的商品对象,并不存在商品集合列表中,则添加到购物车集合列表中,并返回商品集合列表。 */public class GoodsService{    /**     * 商品加入购物车     * @param list 购物车列表     * @param goods 商品信息     * @return 购物车列表     */    public List<Goods> shoppingCart(List<Goods> list, Goods goods) {        // 当购物车为 null        if(list == null){            // 创建购物车集合对象            list = new ArrayList<>();            // 添加商品信息            list.add(goods);        }else{            boolean flag = false;            for (Goods goods2 : list) {                // 当购物车中已存在商品和添加的商品一致时,商品数量进行叠加                if(goods2.getId() == goods.getId()){                    goods2.setQuantity(goods2.getQuantity()+goods.getQuantity());                    flag = true;                    break;                }            }            // 当添加的商品对象不存在与购物车中时,将商品对象存储到购物车集合列表中            if(!flag){                list.add(goods);            }        }        return list;    }    }

我的解题代码

GoodsServiceTest.java

package cn.lanqiao; import java.util.ArrayList;import java.util.List; import org.junit.After;import org.junit.Assert;import org.junit.Before;import org.junit.Test; /** * 1. 请使用简单循环覆盖法对被测源代码 Goods 和 GoodsService 类中的 shoppingCart 方法设计单元测试用例。 * 2. 请在下方 GoodsServiceTest 类中填写单元测试代码内容。 * 3. 请使用 Datas 类中提供的集合对象和商品对象的数据进行测试。 * 4. 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert 。 */public class GoodsServiceTest {        // 声明被测类    private GoodsService goodsService;    private Datas datas;     @Before    public void setUp(){        // 创建被测类实例        goodsService = new GoodsService();        datas = new Datas();    }     @After    public void tearDown(){        // 释放被测类实例        goodsService = null;        datas = null;    }        @Test    public void testShoppingCartIsNull(){        // 购物车不存在的情况        datas.list1 =  goodsService.shoppingCart(null, datas.g1);        Assert.assertNotNull(datas.list1);        Assert.assertEquals(datas.g1, datas.list1.get(0));         }     @Test    public void testShoppingCart00(){        // 0次循环        datas.list2 = goodsService.shoppingCart(datas.list2, datas.g1);        Assert.assertEquals(4, datas.list3.get(0).getQuantity());    }     @Test    public void testShoppingCart01(){        // 1次循环        datas.list3 = goodsService.shoppingCart(datas.list3, datas.g1);        Assert.assertEquals(4, datas.list3.get(0).getQuantity());    }     @Test    public void testShoppingCart02(){        // 2次循环        datas.list3 = goodsService.shoppingCart(datas.list3, datas.g2);        Assert.assertEquals(4, datas.list3.get(1).getQuantity());    }     @Test    public void testShoppingCart05(){        // m次        datas.list3 = goodsService.shoppingCart(datas.list3, datas.g5);        Assert.assertEquals(4, datas.list3.get(4).getQuantity());    }    @Test    public void testShoppingCart08(){        // n-1次        datas.list3 = goodsService.shoppingCart(datas.list3, datas.g8);        Assert.assertEquals(4, datas.list3.get(7).getQuantity());    }     @Test    public void testShoppingCart09(){        // n次        datas.list3 = goodsService.shoppingCart(datas.list3, datas.g9);        Assert.assertEquals(4, datas.list3.get(8).getQuantity());        }     @Test    public void testShoppingCartNewshop(){        // 商品不存在购物车情况        datas.list3 = goodsService.shoppingCart(datas.list3, datas.g10);        Assert.assertEquals(4, datas.list3.get(9).getQuantity());    } }

我的解题思路

解题目标要求:

 * 1、当向购物车添加商品对象时,购物车集合列表不存在,那么系统会创建购物车集合列表,然后向购物车集合中添加商品信息,并返回商品集合列表。

 * 2、当购物车集合对象为空时,可直接添加商品对象至集合列表中,然后返回商品集合列表。

 * 3、当向购物车添加商品对象,而此商品已存在购物车集合对象列表中时,列表中只会对该商品的数量进行叠加,该商品的其他信息不变,完成操作后返回商品集合列表。

 * 4、当向购物车添加的商品对象,并不存在商品集合列表中,则添加到购物车集合列表中,并返回商品集合列表。

1:观察原题代码

发现题中给了这三个列表

其中

list1 = null;

list2 = new ArrayList<>();

list3 为商品列表集合

2解题

目标1、

当向购物车添加商品对象时,购物车集合列表不存在,那么系统会创建购物车集合列表,然后向购物车集合中添加商品信息,并返回商品集合列表。

巧用 list1 = null

目标2、简单循环覆盖(0次,1次,2次,m次,n-1次,n次)

循环的判断

1.  0次循环

2 当购物车集合对象为空时,可直接添加商品对象至集合列表中,然后返回商品集合列表。

巧用 list2 = new ArrayList<>()  一个空集合

1次循环

2次循环

m次循环(随便写)

n-1次 和 最后一次循环n

目标3  当向购物车添加的商品对象,并不存在商品集合列表中,则添加到购物车集合列表中,并返回商品集合列表。

以上如有不对还请多多指正

期间有很多修正,

在此感谢(半只兔子,姜姜7788)俩位大佬指正与帮助

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句