2022年全国职业院校技能大赛(高职组)“软件测试”赛项单元测试参考答案

chatgpt/2023/10/4 7:45:53

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

import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;public class MonthDaysTest {public int getMonthDays(int year, int month) {if (month < 1 || month > 12) {throw new IllegalArgumentException("月份输入不正确。");}int days;if (month == 2) {if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {days = 29; // 闰年} else {days = 28; // 非闰年}} else if (month == 4 || month == 6 || month == 9 || month == 11) {days = 30;} else {days = 31;}return days;}@Testpublic void testGetMonthDays() {MonthDaysTest monthDaysTester = new MonthDaysTest();assertThat(monthDaysTester.getMonthDays(2023, 6), equalTo(30));assertThat(monthDaysTester.getMonthDays(2023, 2), equalTo(28));assertThat(monthDaysTester.getMonthDays(2024, 2), equalTo(29));assertThat(monthDaysTester.getMonthDays(2023, 13), equalTo(null));// 其他测试数据...}
}

题目3:填写快递单时通常需要确定接收人的姓名、手机号和地址。其中要求手机号是 11 位数字字符,地址为字母开头的 10个(含10)以内字母或字母数字共同组成。填写正确则提示“OK”,否则根据实际情况提示“**不符合要求”(**为手机号或地址),退出。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。

import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;public class DeliveryFormTest {public String validateForm(String name, String phoneNumber, String address) {if (!phoneNumber.matches("\\d{11}")) {return "手机号不符合要求";}if (!address.matches("[a-zA-Z0-9]{1,10}")) {return "地址不符合要求";}// 填写正确return "OK";}@Testpublic void testValidateForm() {DeliveryFormTest formTester = new DeliveryFormTest();assertThat(formTester.validateForm("John", "12345678900", "Apt 123"), equalTo("OK"));assertThat(formTester.validateForm("Alice", "1234", "Apt 456"), equalTo("手机号不符合要求"));assertThat(formTester.validateForm("Bob", "12345678900", "This is a very long address"), equalTo("地址不符合要求"));// 其他测试数据...}
}

题目4:输入小写的字符串。如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足条件覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断期望结果值和实际返回值是否一致。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import static org.junit.Assert.assertEquals;import java.util.Arrays;
import java.util.Collection;@RunWith(Parameterized.class)
public class StringTransformationTest {@Parameterized.Parameter(0)public String input;@Parameterized.Parameter(1)public String expectedOutput;@Parameterized.Parameterspublic static Collection<Object[]> data() {return Arrays.asList(new Object[][] {{"abcd", "efgh"}, // 替换前缀{"xyzcdxyz", "xyzghxyz"}, // 替换后缀{"HelloWorld", "HELLOWORLD"}, // 大写字母{"", ""} // 空字符串});}public String transformString(String input) {if (input.startsWith("ab")) {return "替换前缀后的字符串为: " + input.replaceFirst("ab", "ef");} else if (input.endsWith("cd") && !input.startsWith("ab")) {return "替换cd后的字符串为: " + input.replaceAll("cd", "gh");} else {return "大写字母的字符串为: " + input.toUpperCase();}}@Testpublic void testTransformString() {assertEquals(expectedOutput, transformString(input));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313563.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

spring websocket 调用受权限保护的方法失败

版本 spring-security 5.6.10 spring-websocket 5.3.27 现象 通过AbstractWebSocketHandler实现websocket端点处理器 调用使用PreAuthorize注解的方法报错&#xff0c;无法在SecurityContext中找到认证信息 org.springframework.security.authentication.AuthenticationCred…

区块链:可验证随机函数

本篇主要介绍可验证随机函数的定义及其在区块链上的作用。 1 可验证随机函数 1.1 定义 可验证随机函数(Verifiable Random Function&#xff0c;VRF)本质上还是一类具有验证功能的伪随机函数。对于一个特定的输入 m m m以及输入者的私钥 S K SK SK&#xff0c;VRF会输出一个随…

(2)Gymnasium--CartPole的测试

1、主要参考 &#xff08;1&#xff09; CartPole 强化学习详解1 - DQN_Oxalate-c的博客-CSDN博客 &#xff08;2&#xff09;官方文档&#xff0c;推荐&#xff01;&#xff01;&#xff01;&#xff01; Cart Pole - Gymnasium Documentation 2、相关说明 2.1 动作空间 …

深入浅出指南:Netty开发【NIO核心组件】

目录 ​Netty开发【NIO核心组件】 1.NIO基础概念 2.NIO核心组件 2.1.Channel&&Buffer简介 2.2.Selector 服务器的多线程版本 服务器的线程池版本 服务器的selector版本 2.3.Buffer 0.ByteBuffer的正确使用流程 1.ByteBuffer类型简介 2.ByteBuffer核心属性说…

苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)

预期效果 对于超时没处理的需要定时程序处理。基于SpringTask实现。 来单提醒和客户催单。基于WebSocket实现。 Spring Task 介绍 Cron表达式 周几通常不能和日一起指定。 cron表达式在线生成器 在线Cron表达式生成器 入门案例 创建定时任务类 /*** 定义定时任务类*/ Slf4j…

Spring Security 6.x 系列【64】扩展篇之多线程支持

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 本系列Spring Authorization Server 版本 1.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 问题演示2. 解决方案:…

安全基础 --- html标签 + 编码

html标签 &#xff08;1&#xff09;detail标签 <details>标签用来折叠内容&#xff0c;浏览器会折叠显示该标签的内容。 <1> 含义&#xff1a; <details> 这是一段解释文本。 </details> 用户点击这段文本&#xff0c;折叠的文本就会展开&#x…

Maven手动将jar打入本地Maven库

对要打入的jar执行以下命令 mvn install:install-file -DfileD:\xxx.jar -DgroupIdcom.xxx -DartifactIdxxx -Dversion1.0.1 -Dpackagingjar说明&#xff1a; -Dfile 要打入的文件&#xff0c;绝对路径还是相对路径自己定-DgroupId 组-DartifactId 组中的模块儿名-Dversion 版…
推荐文章