第十五届蓝桥杯大赛软件测试科目单元测试实战模拟赛(答案解析)

文章讲述了如何使用Java的JUnit框架,结合基本路径覆盖法和简单循环覆盖法,为Weightlifting、NumberSort、Utils类以及Goods和GoodsService类中的方法设计单元测试用例,确保代码覆盖率达到100%。
摘要由CSDN通过智能技术生成

第一题

请使用基本路径覆盖法对被测源代码 Weightlifting 类中的 divide 方法设计单元测试用例,并在 WeightliftingTest 类中完成单元测试代码。

题目要求

  1. 请使用基本路径覆盖法设计 5 条测试用例,使被测代码的基本路径覆盖率达到 100% 。
  2. 请使用 Java 语言对应的单元测试框架 JUnit 编写测试代码。
  3. 测试代码请直接在提供的类文件 WeightliftingTest.java 中编写。
  4. 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert。
  5. 请不要修改所提供的文件名称,否则将会判 0 分。

题解

import org.junit.Assert;
import org.junit.Test;

public class WeightliftingTest {

    Weightlifting weightlifting = new Weightlifting();

    @Test
    public void testManQualified() {
        String result = weightlifting.divide("男", 55);
        Assert.assertEquals("男子组", result);
    }

    @Test
    public void testManNotQualified() {
        String result = weightlifting.divide("男", 53);
        Assert.assertEquals("无资格参赛", result);
    }

    @Test
    public void testWomanQualified() {
        String result = weightlifting.divide("女", 46);
        Assert.assertEquals("女子组", result);
    }

    @Test
    public void testWomanNotQualified() {
        String result = weightlifting.divide("女", 45);
        Assert.assertEquals("无资格参赛", result);
    }

    @Test
    public void testGenderException() {
        String result = weightlifting.divide("其他", 60);
        Assert.assertEquals("性别异常", result);
    }
}

其实非常简单,只要看到返回,再给他条件就行了

第二题

请使用基本路径覆盖法对被测源代码 NumberSort 类中的 sort 方法设计单元测试用例。并在 NumberSortTest 类中完成单元测试代码。

题目要求

  1. 请使用基本路径覆盖法设计 6 条测试用例,使被测代码的基本路径覆盖率达到 100% 。
  2. 请使用 Java 语言对应的单元测试框架 JUnit 编写测试代码。
  3. 测试代码请直接在提供的类文件 NumberSortTest.java 中编写。
  4. 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert。
  5. 请不要修改所提供的文件名称,否则将会判 0 分。

题解

java
import org.junit.Assert;
import org.junit.Test;

public class NumberSortTest {

    NumberSort numberSort = new NumberSort();

    @Test
    public void testCase1() {
        String result = numberSort.sort(3, 2, 1);
        Assert.assertEquals("cba", result);
    }

    @Test
    public void testCase2() {
        String result = numberSort.sort(1, 2, 3);
        Assert.assertEquals("abc", result);
    }

    @Test
    public void testCase3() {
        String result = numberSort.sort(2, 1, 3);
        Assert.assertEquals("acb", result);
    }

    @Test
    public void testCase4() {
        String result = numberSort.sort(3, 1, 2);
        Assert.assertEquals("bca", result);
    }

    @Test
    public void testCase5() {
        String result = numberSort.sort(1, 3, 2);
        Assert.assertEquals("cab", result);
    }

    @Test
    public void testCase6() {
        String result = numberSort.sort(2, 3, 1);
        Assert.assertEquals("bac", result);
    }
}

一样和第一题差不多

第三题

请使用简单循环覆盖法的标准要求,对被测源代码 Utils 类中的 stringStyle 方法进行设计单元测试用例。并在 UtilsTest 类中完成单元测试代码。

题目要求

  1. 请使用简单循环覆盖法设计 6 条测试用例,使被测代码的判定循环覆盖率达到 100% 。
  2. 请使用 Java 语言对应的单元测试框架 JUnit 编写测试代码。
  3. 测试代码请直接在提供的类文件 UtilsTest.java 中编写。
  4. 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert。
  5. 请不要修改所提供的文件名称,否则将会判 0 分。
import org.junit.Assert;
import org.junit.Test;

public class UtilsTest {

    @Test
    public void testCase1() {
        String result = Utils.stringStyle("aaaaaaaaaaa", 3, 12);
        Assert.assertEquals("aaaaaaaaaaaa", result);
    }

    @Test
    public void testCase2() {
        String result = Utils.stringStyle("12345678910", 3, 12);
        Assert.assertEquals("12345678910 ", result);
    }

    @Test
    public void testCase3() {
        String result = Utils.stringStyle("abcde", 3, 6);
        Assert.assertEquals("字符串长度必须在3~6位", result);
    }

    @Test
    public void testCase4() {
        String result = Utils.stringStyle("abcdefg  ", 3, 8);
        Assert.assertEquals("abcdefg  ", result);
    }

    @Test
    public void testCase5() {
        String result = Utils.stringStyle("hello world", 3, 12);
        Assert.assertEquals("hello world", result);
    }

    @Test
    public void testCase6() {
        String result = Utils.stringStyle("  abc   ", 3, 6);
        Assert.assertEquals("  abc   ", result);
    }
}

这个题有点困难,考的是了解白盒测试的基本测试法,主要是循环的考法是跳过循环、循环 1 次、2 次,m 次(2<m<n-1)、n - 1 次、n 次、n + 1 次这些考法,只要记住这些方法,就可以迎刃而解了,下面是更详细的方法。

链接

软件测试循环语句覆盖法-CSDN博客

第四题

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

题目要求

  1. 请使用基本路径覆盖法 + 简单循环覆盖法设计测试用例,使被测代码的路径和循环覆盖率达到 100% 。
  2. 请使用 Java 语言对应的单元测试框架 JUnit 编写测试代码。
  3. 测试代码请直接在提供的类文件 GoodsServiceTest.java 中编写。
  4. 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert。
  5. 请不要修改所提供的文件名称,否则将会判 0 分。
package cn.lanqiao;

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;

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

    @After
    public void tearDown(){
        // 释放被测类实例
        goodsService = null;
    }
    
    @Test
    public void testShoppingCart01(){
        // TODO 请填写单元测试代码
        Assert.assertEquals((goodsService.shoppingCart(Datas.list1,Datas.g1)).get(0) , Datas.g1);
    }

    @Test
    public void testShoppingCart02(){
        // TODO 请填写单元测试代码
        Assert.assertEquals((goodsService.shoppingCart(Datas.list2,Datas.g10)).get(0) , Datas.g10);
    }
    
    @Test
    public void testShoppingCart03(){
        // TODO 请填写单元测试代码
        Assert.assertEquals(goodsService.shoppingCart(Datas.list3, Datas.g10).get(9) , Datas.g10);
    }

    @Test
    public void testShoppingCart04(){
        // TODO 请填写单元测试代码
        Assert.assertEquals(goodsService.shoppingCart(Datas.list3, Datas.g1).get(0).getQuantity() , 4);
    }

    @Test
    public void testShoppingCart05(){
        // TODO 请填写单元测试代码
        Assert.assertEquals(goodsService.shoppingCart(Datas.list3, Datas.g2).get(1).getQuantity() , 4);
    }

    @Test
    public void testShoppingCart06(){
        // TODO 请填写单元测试代码
        Assert.assertEquals(goodsService.shoppingCart(Datas.list3, Datas.g3).get(2).getQuantity() , 4);
    }

    @Test
    public void testShoppingCart07(){
        // TODO 请填写单元测试代码
        Assert.assertEquals(goodsService.shoppingCart(Datas.list3, Datas.g9).get(8).getQuantity() , 4);
    }

    @Test
    public void testShoppingCart08(){
        // TODO 请填写单元测试代码
        Assert.assertEquals(goodsService.shoppingCart(Datas.list3, Datas.g10).get(9).getQuantity() , 2);
    
    }
}

这个题非常难,但是要求也是基本路径测试一样的需求,还是很容解决

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值