0


单元测试练习(JAVA版)

单元测试练习(JAVA版)

文章目录

题目来源于:https://blog.csdn.net/weixin_57099902/article/details/131430247

题目1:

根据下列流程图编写程序实现相应分析处理并显示结果。返回文字“x=a*a*b的值:”和x的值;返回文字“x=a-b的值:”和x的值;返回文字“x=a+b的值:”和x的值。其中变量a、b均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用断言判断期望结果返回文字和实际返回文字是否一致。

在这里插入图片描述

分析题目:

输入a,b皆为整型
如果真a>9且b>5,则 返回 x=a*a*b的值:x
否则 如果真 a<0且 b<0
则 返回x=a-b:x
否则 返回x=a+b:x

得到答案:

package cn.lanqiao;

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

/*  
 * 
    输入a,b皆为整型
    如果真a>9且b>5,则 返回 x=a*a*b的值:x
    否则 如果真 a<0且 b<0
    则 返回x=a-b:x
    否则 返回x=a+b:x
 * 
 */

public class Test01 {
    
    private Test01 t01 = null;
    
    public String Method(int a,int b) {
        
        if(a>9&&b>5) {
            return "x=a*a*b的值:"+(a*a*b);
        }else if(a<0&&b<0) {
            return "x=a-b的值:"+(a-b);
        }else {
            return "x=a+b的值:"+(a+b);
        }
    }
    
    @Before
    public void beforeTest() {
        t01 = new Test01();
    }
    
    @Test
    public void test01() {
        Assert.assertEquals("x=a*a*b的值:600", t01.Method(10, 6));
    }
    @Test
    public void test02() {
        Assert.assertEquals("x=a-b的值:0", t01.Method(-1, -1));
    }
    @Test
    public void test03() {
        Assert.assertEquals("x=a+b的值:2", t01.Method(1, 1));
    }
    
    
}

题目2:

根据输入的年份和月份判断月份的天数。若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;不为闰年输出2月份天数。返回结果格式:“year年month月份的天数是days天。”year、month为传入的值,days为判断得到的天数值。其中变量year、month均须为正整数。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用断言判断返回期望结果和实际返回是否一致。

分析题目:


输入年份(year),月份(month)皆为整型
如果真(月份不在有效范围之内) {

    则返回“月份输入不正确。”
} else 如果真 (月份不为2月){
    则根据输入月份输出对应的月份天数
}else {
    if(世纪闰年){

         输出2月份正确天数
    }else if(年份判断如为普通闰年){
        输出2月份正确天数
    }else{

        输出2月份天数
    }

}

得到答案:

package cn.lanqiao;

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

/*
 * 
 * 
 * 
 * 
 * 
 */
public class Test02 {
    
    private Test02 t02 = null;
    
    @Before
    public void beforeTest() {
        t02 = new Test02();
    }
    
    
    public  String getDaysInMonth(int year, int month) {  
          
        // 每个月默认的天数  
        String[] daysInMonth = {"31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31"};  
          
        // 如果是闰年,2月份有29天  
        if (month == 2 && isLeapYear(year)) {  
            return "29";  
        }  
        //月份输入要正确,保证数组不会溢出
        if(month>12 || month <1) {
            return null;
        }  
        // 返回对应月份的天数  
        return daysInMonth[month - 1];  
    } 
    
    private  boolean isLeapYear(int year) {
        if((year%4==0 && year%100!=0) || year%400==0) {
            return true;
        }else {
            return false;
        }
    }

    public String Method(int year,int month) {
        
        
        String day = getDaysInMonth(year,month);
        
        if(month>12 || month <1) {
            return "月份输入不正确。";
        }else if(month!=2) {
            return day;
        }else {
            //貌似判断普通闰年后在判断世纪闰年,无实际意义
            //因此我先判断世纪了
            if(year%400==0) {
                //世纪闰年
                return day;
            }else if((year%4==0 && year%100!=0) || year%400==0) {
                //普通闰年
                return day;
            }else {
                //不为闰年,即平年
                return day;
            }

        }
        
    }
    
    
    @Test
    public void test01() {
        Assert.assertEquals("月份输入不正确。", t02.Method(2011, 13));
    }
    @Test
    public void test02() {
        Assert.assertEquals("30", t02.Method(2011, 6));
    }
    @Test
    public void test03() {
        Assert.assertEquals("29", t02.Method(2024, 2));
    }
    @Test
    public void test04() {
        Assert.assertEquals("29", t02.Method(2000, 2));
    }
    @Test
    public void test05() {
        Assert.assertEquals("28", t02.Method(2011, 2));
    }

}

题目3:

邮箱注册需要填写邮箱地址和密码。其中要求邮箱格式“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或com.cn。密码为6个(含6)以上数字组成。填写正确则提示“信息正确”,否则根据实际情况提示“**不符合要求”(**为邮箱地址或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用断言判断输出文字期望结果值和实际返回值是否一致。

分析题目:

输入邮箱地址(“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或com.cn)

和密码(6个(含6)以上数字组成)

如果真(正确){
    return "信息正确"
}else{

    return 根据实际情况提示“**不符合要求”(**为邮箱地址或密码)
}

得到答案:

package cn.lanqiao;

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

public class Test03 {
    
    private Test03  t03 = null;
    
    boolean dlm = false;
    
    boolean zjm = false;
    
    boolean ym = false;
    
    boolean mm = false;
    
    @Before
    public void beforeTest() {
        
        t03= new Test03();
    }
    
    
    public void setstu(String postbox,int password) {
        //取出登录名
        String loginName = postbox.substring(0,5);
        
        //判断登录名为5位
        if(postbox.indexOf("@")==5) {
            dlm=true;
        }
        char[] zim = loginName.toCharArray();
        for(char a:zim) {
            if(Character.isLetter(a)==false) {
                dlm=false;
            }
        }
        
        //取主机名
        String locateName = postbox.substring(6,9);
        //判断主机名是否为163|126
        
        if(locateName.equals("163")||locateName.equals("126")) {
            zjm=true;
        }else {
            zjm=false;
        }
        
        //取域名
        
        String ymName = postbox.substring(10);
        
        //判断域名是否为com|com.cn
        if(ymName.equals("com")||ymName.equals("com.cn")) {
            ym=true;
        }else {
            ym=false;
        }
        
        
        //判断密码是否为6位
        if(Integer.toString(password).length()>=6) {
            mm=true;
        }else {
            mm=false;
        }
    }

    
    
    public String test01(String postbox,int password) {
        
        //获取状态
        setstu(postbox,password);
        
        //到此为止,登录名,主机名,域名,密码 dlm,zjm,ym,mm
        if(dlm==false) {
            return "登录名不符合要求";
        }else if(zjm==false) {
            return "主机名不符合要求";
        }else if(ym==false) {
            return "域名不符合要求";
        }else if(mm==false) {
            return "密码不符合要求";
        }else {
            return "信息正确";
        }
        

    }
    @Test
    public void test01() {
        Assert.assertEquals("登录名不符合要求", t03.test01("[email protected]",123456));
    }
    @Test
    public void test02() {
        Assert.assertEquals("主机名不符合要求", t03.test01("[email protected]",123456));
    }
    @Test
    public void test03() {
        Assert.assertEquals("域名不符合要求", t03.test01("[email protected]",123456));
    }
    @Test
    public void test04() {
        Assert.assertEquals("密码不符合要求", t03.test01("[email protected]",12345));
    }
    @Test
    public void test05() {
        Assert.assertEquals("信息正确", t03.test01("[email protected]",123456));
    }

}

题目4:

根据下列流程图编写程序实现相应分析处理并显示结果。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。

在这里插入图片描述

分析题目:

输入userNname和password

如果真(都为空){

    return "用户名或密码不能为空"
} else  如果真(name="admin" && password ="123") {
    
    return "登录成功"
}else 如果真(name!="admin" &&password="123"){
    
    return "请输入正确的用户名"
}else 如果真(name="admin" && password !="123"){

    return "请输入正确的密码"
}else(name!="admin" && password!="123"){
    return "请输入正确的用户名和密码"
}

得到答案:

package cn.lanqiao;

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

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith(Parameterized.class)
public class Test04 {
    
    private Test04 t04 = null;
    private String userName = null;
    private String password = null;
    private String msg = null;
    public Test04(String u,String p,String m) {
        this.userName=u;
        this.password=p;
        this.msg=m;
    }
    
    
    @Before
    public  void beforeTest() {
        t04= new Test04(userName, password,msg);
    }
    
    
    @Parameterized.Parameters
    public static Collection data() {
        Object[] ob =new Object[][] {
            {"","","用户名或密码不能为空"},
            {"admin","123","登录成功"},
            {"admi","123","请输入正确的用户名"},
            {"admin","23","请输入正确的密码"},
            {"admi","23","请输入正确的用户名和密码"},
            
        };
        return Arrays.asList(ob);
    }
    
    
    
    public String testMethod() {
        
        if(userName=="" && password=="") {
            return "用户名或密码不能为空";
        }else if(userName=="admin" && password=="123") {
            return "登录成功";
        }else if(userName!="admin" && password=="123") {
            return "请输入正确的用户名";
        }else if(userName=="admin" && password !="123") {
            return "请输入正确的密码";
        }else{
            return "请输入正确的用户名和密码";
        }
        
        
    }
    
    
    @Test
    public void test() {
        Assert.assertEquals(msg, t04.testMethod());
    }

}

本文转载自: https://blog.csdn.net/2201_75675465/article/details/137556000
版权归原作者 软件测试小白嘞 所有, 如有侵权,请联系我们删除。

“单元测试练习(JAVA版)”的评论:

还没有评论