实验三 单元测试

实验三   单元测试1

 

一、实验目的

1、掌握单元测试的基本理论和作用。

2、掌握典型单元测试工具 JUnit 的使用

二、实验内容

实验任务 1

请按以下说明完成一个基本的 JUnit4 测试实例。

首先打开 Eclipse 编译器,创建一个 Java 项目,并在其中创建一个由 File 类构成的程序 File.java,给该类添加一个 abs 方法,作用是返回一个给定整数参数的绝对值。

public class File {

public static void main(String[] args) {

// TODO Auto-generated method stub

}

然后用JUnit工具对abs方法进行测试。

 

 

代码:

package uuu;

import org.junit.Before;

import org.junit.Test;

 

public class File {

    private static int a;

   

    @Before

    public void init(){

        a = -1000;

    }

 

    @Test

    public void abs(){

        int result;

        result = Math.abs(a);

        System.out.println(result);

    }

}

实验截图:

 

实验任务 2

根据下面的说明,建立一个基于 JUnit4 的测试项目,对一个类当中的多个方法进行单元测试,进一步体验一下单元测试的作用和 JUnit 测试的应用。

首先新建一个项目叫 JUnitTest,我们编写一个 Calculator 类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些 Bug 用于演示,这些 Bug 在注释中都有说明。该类代码如下:

public class Calculator{

private static int result; // 静态变量,用于存储运行结果

public void add(int n) {

result = result + n;

}

public void substract(int n) {

result = result - 1; //故意的Bug,应该是 result =result-n

}

public void multiply(int n) {

} // 假设此方法在项目完成过程中尚未写好

public void divide(int n) {

result = result / n;

}

public void square(int n) {

result = n * n;

}

public void squareRoot(int n) { //求平方根

for (; ;) ; //Bug : 死循环

}

public void clear() { // 将结果清零

result = 0;

}

public int getResult(){

return result;

}

}

将 JUnit4 单元测试包引入这个项目,生成 JUnit 测试框架,进行测试。

 

 

代码:

package uuu;

import org.junit.Before;

import org.junit.Test;

 

public class Calculator{

    private static int result; // 静态变量,用于存储运行结果

    public void add(int n) {

        result = result + n;

    }

    public void substract(int n) {

        result = result - 1; //故意的Bug,应该是 result =result-n

    }

    public void multiply(int n) {

    } // 假设此方法在项目完成过程中尚未写好

    public void divide(int n) {

        result = result / n;

    }

    public void square(int n) {

        result = n * n;

    }

    public void squareRoot(int n) { //求平方根

        for (; ;) ; //Bug : 死循环

    }

    public void clear() { // 将结果清零

        result = 0;

    }

    public int getResult(){

        return result;

    }

    @Test

    public void test(){//增加一个test方法

        square(100);

        System.out.println(getResult());

    }

}

 

实验截图:

 

实验任务3

编写程序判断闰年,设计测试⽤例并⽤Junit进⾏测试。

代码:

package uuu;

import org.junit.Before;

import org.junit.Test;

import java.util.Scanner;

public class Isrun {

            public static int y;

   

            @Before

            public void init(){

                y = 2022;

            }

   

            @Test

            public void ifR(){

                if (y % 400 == 0)

                    System.out.println(y + "是闰年");

                else if (y % 100 == 0)

                    System.out.println(y + "不是闰年");

                else if (y % 4 == 0)

                    System.out.println(y + "是闰年");

                else

                    System.out.println(y + "不是闰年");

            }

 

}

实验截图:

 

 

实验任务4

编写程序判断一般三角形,等腰三角形,等边三角形,设计测试用例并用JUnit进行测试。

代码:

package uuu;

import org.junit.Before;

import org.junit.Test;

 

import java.math.BigDecimal;

 

public class San {

    public static double a;

    public static double b;

    public static double c;

 

    @Before

    public void init(){

        a = 10.01;

        b = 3.65;

        c = 7.66;

    }

 

    @Test

    public void checkTritangle(){//判断三角形类型

        String result = null;

 

        //BigDecimal不会丢失double的精度

        BigDecimal a1 = new BigDecimal(a);

        BigDecimal b1 = new BigDecimal(b);

        BigDecimal c1 = new BigDecimal(c);

 

        if(a1!=null&&b1!=null&&c1!=null){

 

            if(a+b>c&&a+c>b&&b+c>a){

                //乘积

                BigDecimal a2 = a1.multiply(a1);

                BigDecimal b2 = b1.multiply(b1);

                BigDecimal c2 = c1.multiply(c1);

 

                //先判断直角

                //判断BigDecimal不能用==或者equals,得用compareTo

                if((a2.add(b2)).compareTo(c2) == 0 || (a2.add(c2)).compareTo(b2) == 0 || (b2.add(c2)).compareTo(a2) == 0){

                    if(a1 == b1 || a1 == c1 || b1 == c1){

                        result = "等腰直角";

                    } else {

                        result = "直角";

                    }

                } else if (a1 == b1 && b1 == c1){

                    result = "等边";

                } else if (a1 == b1 || b1 == c1 || b1 == c1){

                    result = "等腰";

                } else {

                    result = "普通";

                }

            } else {

                result = "无法构成三角形";

            }

        }else{

            result = "请检查参数值是否为空或参数值是否正确";

        }

        System.out.println(result + "三角形");

    }

}

实验截图:

 

posted @ 2022-05-13 09:52  潘福龙  阅读(149)  评论(0编辑  收藏  举报