单元测试练习(JAVA版)

这篇具有很好参考价值的文章主要介绍了单元测试练习(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框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用断言判断期望结果返回文字和实际返回文字是否一致。

单元测试练习(JAVA版),单元测试,java,开发语言

分析题目:

输入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("bcde@163.com",123456));
	}
	@Test
	public void test02() {
		Assert.assertEquals("主机名不符合要求", t03.test01("bcdef@110.com",123456));
	}
	@Test
	public void test03() {
		Assert.assertEquals("域名不符合要求", t03.test01("bcdef@163.zyx",123456));
	}
	@Test
	public void test04() {
		Assert.assertEquals("密码不符合要求", t03.test01("bcdef@163.com",12345));
	}
	@Test
	public void test05() {
		Assert.assertEquals("信息正确", t03.test01("bcdef@163.com",123456));
	}

}

题目4:

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

单元测试练习(JAVA版),单元测试,java,开发语言

分析题目:

输入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 "请输入正确的用户名和密码"
}

得到答案:文章来源地址https://www.toymoban.com/news/detail-856193.html

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());
	}

}

到了这里,关于单元测试练习(JAVA版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java开发手册之单元测试,软件测试端简单易用的SPI框架

    【推荐】编写单元测试代码遵守 BCDE 原则,以保证被测试模块的交付质量。 B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。 C:Correct,正确的输入,并得到预期的结果。 D:Design,与设计文档相结合,来编写单元测试。 E:Error,强制错误信息输

    2024年04月25日
    浏览(48)
  • Java语言基础(4)IDEA程序debug断点调试与单元测试junit(图文简单超详细教程,一文搞定debug断点调试和junit单元测试)

    在代码中,找一个位置,点击 前面出现红色点:这个叫 断点 右击鼠标,选择Debug运行 下图:鼠标悬停上面,会提示如下 1、Step Over(F8):点击这个按钮,或者按住F8键,可以往后面执行 2、Step Into(F7):可以进入方法内部,如果当前执行到方法调用,就可以进入方法内部 3、Fo

    2024年02月20日
    浏览(47)
  • 以AI驱动的Java单元测试解决方案提高开发人员的生产力

    2023年11月8日,自动化软件测试解决方案的全球领导者 Parasoft 宣布与 OpenAI 和 Azure OpenAI 供应商进行新的集成,为 Java 开发人员生产力解决方案 Parasoft Jtest 引入GenAI功能。这一增强功能使开发人员和开发经理能够加速并增强他们的 Java 代码测试流程,提高生产率和质量。 Para

    2024年01月24日
    浏览(50)
  • Java企业级信息系统开发学习笔记(4.2)Spring Boot项目单元测试、热部署与原理分析

    该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/pG623】 1. 添加测试依赖启动器和单元测试 修改pom.xml文件,添加依赖 刷新项目依赖 2. 创建测试类与测试方法 在 src/test/java 里创建 cn.kox.boot 包,创建测试类 TestHelloWorld01 给测试类添加测试启动器注解与Spring

    2024年02月10日
    浏览(57)
  • 【JAVA开发面试】如何处理并发访问如何进行代码的单元测试Java多线程编程消息中间件设计模式技术难题是如何解决的

    【 点我-这里送书 】 本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题 中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明

    2024年02月03日
    浏览(52)
  • 【go语言开发】编写单元测试

    本文主要介绍使用go语言编写单元测试用例,首先介绍如何编写单元测试,然后介绍基本命令的使用,最后给出demo示例 在go语言中编写单元测试时,使用说明 测试文件命名 :在 Go 语言中,测试文件的命名应与被测试的源代码文件相同,但以 “_test” 结尾。例如,如果你的源

    2024年02月04日
    浏览(45)
  • 【单元测试】一文读懂java单元测试

    单元测试 是软件开发中常用的一种测试方法,用于验证代码的单个功能单元是否按照预期工作。 测试方法: 白盒测试(White Box Testing):在白盒测试中,测试人员了解代码的内部结构和实现细节,编写测试用例来覆盖不同的代码路径和逻辑条件。 黑盒测试(Black Box Testing)

    2024年04月17日
    浏览(46)
  • 单元自测Java 单元测试规范

    目录 1、前言 1.1 定义 1.2 单元测试CheckList 1.3 测试模型 1.3.1 冰淇淋模型 1.3.2 金字塔模型 1.4 为什么要做单元测试 1.5单元测试编码规则 1.6 单元测试用例的设计要素  2、测试框架介绍 3、单元测试开发规范 3.1 注意事项 3.2 命名规范 3.3 输入数据规范 3.4 结果校验规范         单

    2024年02月15日
    浏览(38)
  • 【Java】Java(四十七):单元测试

    JUnit是一个 Java 编程语言的单元测试工具。JUnit 是一个非常重要的测试工具 JUnit是一个开放源代码的测试工具。 提供注解来识别测试方法。 JUnit测试可以让你编写代码更快,并能提高质量。 JUnit优雅简洁。没那么复杂,花费时间较少。 JUnit在一个条中显示进度。如果运行良好

    2024年02月08日
    浏览(45)
  • 【Java练习题汇总】《第一行代码JAVA》综合测试三,汇总Java练习题

    线程的启动方法是( )。 A. run() B. start() C. begin() D. accept() Thread 类提供表示线程优先级的静态常量,代表普通优先级的静态常量是( )。 A. MAX_PRIORITY B. MIN_PRIORITY C. NORMAL_PRIORITY D. NORM_PRIORITY 设置线程优先级的方法是( )。 A. setPriority() B. getPriority() C. getName() D. setName() 下面 ( )方法是

    2024年02月14日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包