单元测试练习(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
版权归原作者 软件测试小白嘞 所有, 如有侵权,请联系我们删除。
版权归原作者 软件测试小白嘞 所有, 如有侵权,请联系我们删除。