> 技术文档 > 头歌-软工导论2025-单元测试

头歌-软工导论2025-单元测试

(给个关注收藏点赞)

第一关

package step1;

 

import org.junit.Assert;

import org.junit.Test;

import static org.junit.Assert.assertEquals;

import step1.Calculator;

 

public class CalculatorTest {

    // 引入Calculator对象

    Calculator calcu = new Calculator();

 

    /*

     请在下面的Begin/End内补全测试函数,

     来验证Calculator中的add、sub、multiply、divide函数编写是否正确

     */

     /***********************Begin**************************/

    @Test

    public void testAdd(){

        // 测试加法功能

        int result = calcu.add(2, 3);

        assertEquals(5, result);

    }

 

    @Test

    public void testSub(){

        // 测试减法功能

        int result = calcu.sub(5, 2);

        assertEquals(3, result);

    }

 

    @Test

    public void testMultiply(){

        // 测试乘法功能

        int result = calcu.multiply(4, 5);

        assertEquals(20, result);

    }

 

    @Test

    public void testDivide(){

        // 测试正常除法功能

        int result = 0;

        try {

            result = calcu.divide(10, 2);

            assertEquals(5, result);

        } catch (Exception e) {

            Assert.fail(\"除法测试失败,抛出异常:\" + e.getMessage());

        }

    }

 

    @Test

    public void testDivideByZero(){

        // 测试除数为0的情况

        Throwable th = null;

        try {

            calcu.divide(10, 0);

            Assert.fail(\"应该抛出异常但未抛出\");

        } catch (Exception e) {

            th = e;

            assertEquals(\"除数不能为0\", th.getMessage());

        }

    }

     /************************End***************************/

}
 



第二关

package step2;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;
import java.util.Collection;

import static org.junit.Assert.assertEquals;

@RunWith(Parameterized.class)
public class CalculatorTest2 {
    private int a;
    private int b;
    private int expect;

    @Parameterized.Parameters
    public static Collection prepareData(){
        /***********************Begin**************************/
        return Arrays.asList(new Object[][]{
            {2, 3, 6},       // 正数相乘
            {-4, 5, -20},    // 负数×正数
            {-3, -2, 6},     // 负数×负数
            {0, 10, 0}       // 零乘任何数
        });
        /************************End***************************/
    }

    public CalculatorTest2(int a,int b,int expect){
        this.a = a;
        this.b = b;
        this.expect = expect;
    }

    @Test
    public void testMultiply() {
        Calculator calcu = new Calculator();
        int res = calcu.multiply(a,b);
        assertEquals(expect,res);
    }
}
 



## 第三关

  • 1、

    下面关于关于测试的说法正确的是:A

    A、

    测试是为了发现程序中的错误而执行程序的过程

    B、

    测试是为了表明程序是正确的

    C、

    成功的测试是没有发现错误的测试

    D、

    经过了严格的测试,程序中就不可能还有没被发现的错误。

  • 2、

    好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。A

    A、

    B、

    ×

  • 3、

    应该远在测试开始之前就制定出测试计划。A

    A、

    B、

    ×

  • 4、

    “帕累托定律”指的是D

    A、

    一个设计得好的典型系统的平均扇出通常是3或4。

    B、

    一个人在任何时候都只能把注意力集中在(7±2)个知识块上。

    C、

    C.一个模块的规模最好不超过60行语句。

    D、

    80%的错误是由20%的原因造成的。

  • 5、

    为达到测试最佳效果,应由独立的第三方从事测试工作。A

    A、

    B、

    ×



  •  

  • 1、

    白盒测试是已经知道了产品应该具有的功能,通过测试检验是否每个功能都能正常使用。B

    A、

    B、

    ×

  • 2、

    黑盒测试是从____观点的测试,白盒测试是从____观点的测试。C

    A、

    开发人员、管理人员

    B、

    用户、管理人员

    C、

    用户、开发人员

    D、

    开发人员、用户

  • 3、

    白盒测试又称功能测试。B

    A、

    B、

    ×

  • 4、

    黑盒测试又称结构测试。B

    A、

    B、

    ×

  • 5、

    单元测试的目的是保证每个模块作为一个单元能正确运行。A

    A、

    B、

    ×