闰年测试非法输入的处理 简单安卓app 20150406

在软件测试的课上,老师介绍了闰年测试。闰年测试旨在检测某一年份是否为闰年,计算方式为四年一闰,百年不闰,四百年再闰。使用安卓实现这个小程序。

界面代码如下:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5
 6     tools:context="${relativePackage}.${activityClass}" >
 7
 8     <TextView
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_centerHorizontal="true"
12         android:text="@string/hello_world" />
13
14    <EditText
15         android:id="@+id/editText"
16         android:layout_width="fill_parent"
17         android:layout_height="wrap_content"
18         android:layout_marginTop="23dp"
19         android:ems="10"
20         android:hint="@string/hint"
21         android:lines="1"
22         >
23     </EditText>
24
25    <Button
26        android:id="@+id/button"
27        android:layout_width="wrap_content"
28        android:layout_height="wrap_content"
29        android:layout_below="@+id/editText"
30        android:layout_centerHorizontal="true"
31        android:text="@string/bt" />
32
33 </RelativeLayout>

结果如下:

在我的程序中,使用Integer.parseInt的方法获取editText中输入的年份。在没考虑非法字符的情况下,输入特殊字符而非年份。程序停止运行。

在android ADT的logcat中,可以看到程序运行的日志:

String转化为int类型失败。考虑非法字符,即输入年份不合法,无法转换成String类型,使用try,catch截获错误,最终代码如下

 1 package com.leap.leapyear;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.Gravity;
 6 import android.view.View;
 7 import android.view.View.OnClickListener;
 8 import android.widget.Button;
 9 import android.widget.EditText;
10 import android.widget.Toast;
11
12 public class MainActivity extends Activity {
13     private EditText mEditText;
14
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19
20         Button button = (Button) this.findViewById(R.id.button);
21         mEditText = (EditText) MainActivity.this.findViewById(R.id.editText);
22
23         button.setOnClickListener(new OnClickListener() {
24             @Override
25             public void onClick(View v) {
26                 String number = mEditText.getText().toString();
27                 checkLeap(number);
28             }
29         });
30     }
31
32     private void checkLeap(String number) {
33
34         int messageResId = R.string.false_toast;
35
36         try {
37             int year = Integer.parseInt(number);
38
39             if (year % 4 == 0) {
40                 messageResId = R.string.true_toast;
41             }
42             if (year % 100 == 0) {
43                 messageResId = R.string.false_toast;
44             }
45             if (year % 400 == 0) {
46                 messageResId = R.string.true_toast;
47             }
48         }
49         catch (Exception e) {
50             messageResId = R.string.illegal_toast;
51         }
52
53         Toast toast = Toast.makeText(this, messageResId, Toast.LENGTH_SHORT);
54         toast.setGravity(Gravity.CENTER, 0, 0);
55         toast.show();
56     }
57 }

使用测试用例进行测试

有效等价类:被4整除而且不被100整除或可以被400整除

无效等价类:其他年份,非法字符,空

测试结果如下

测试结果:

其他:

有更简单的问题解决办法,在输入框<EditText/>下加一行android:inputType="number",限制输入为数字,测试发现点击输入框输入法自动切换为数字输入,而且无法输入除数字以外的字符。如下:

时间: 2024-09-28 03:26:27

闰年测试非法输入的处理 简单安卓app 20150406的相关文章

[软件测试学习]考虑到测试的代码编写/int.parse的非法输入—由一个简单的c#闰年检测程序说起

一个简单的C#的闰年检测程序 1.闰年检测的函数编写 当提起检测平年闰年时候,第一反应写出的代码 1 public static bool isLeapYear(int year){ 2 return ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0)) 3 } 但是这个并不易于测试和出现错后的修改,更改代码如下 1 public static bool isLeapYear(int year){ 2 bool check = ne

闰年的非法输入的问题

1.问题描述 输入年份,判断其是否为闰年. 2.判断条件 1)能被4整除且不能被100整除的为闰年. 2)能被100整除且被400整除的为闰年. 3.等价类划分 编号 有效等价类 编号 无效等价类 1 能被400整除 3 能被100整除不能被4整除   2 能被4整除不能被100整除 4 不能被4整除 5 非法输入(包括负数) 4.测试用例 编号 输入 覆盖等价类 输出 1 1600 1 1600是闰年 2 2012 2 2012是闰年 3 1700 3 1700非闰年 4 2014 4 201

JAVA闰年测试与解决非法输入

问题实现 实现一个闰年测试的JAVA代码如下: package leapyear; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextFi

软件测试——闰年测试

只要是对于需要记录年份的程序,闰年检测都是一个很重要的环节.公历的闰年规则如下:   1.普通年能被4整除且不能被100整除的为闰年.(如2004年就是闰年,1900年不是闰年) 2.世纪年能被400整除的是闰年.(如2000年是闰年,1900年不是闰年) 然而对于不正确的输入,程序必须对持做出反应,不能使异常情况阻碍程序的运行,下面是闰年检测的程序试例: 输入年份 结果 2000 闰年 1900 非闰年 -1600 非法输入 1864 闰年 saddsa 非法输入 代码实现: import j

关于软件测试(4):闰年输入的判断以及非法输入的处理测试

针对这周的软件测试课程,讲解了非法输入的不正当处理会对程序造成不必要的损失,因此通过简单的闰年检测程序来处理关于闰年测试的非法输入. 一.需求分析 要求输入框输入年份,点击按钮,出现提示.并能有效的处理任何输入 二.测试用例 内容 取值 预期结果 被400整除 2000 是闰年 被100整除但不被400整除 1900 不是闰年 被4整除且不被100整除 1904 是闰年 不被4整除 1901 不是闰年 非数字字符 abc 非法输入 负数 -1234 非法输入 小数 2000.5 非法输入 空字符

闰年测试(非法输入的判断)

1. 问题描述: 输入一个年份,判断其是否为闰年,若为非法输入则给出提示 2. 问题分析: 闰年的判断: 1)输入一个年份,若它能被400整除,则它是闰年:若它能被4整除,且它不能被100整除,则它是闰年 由此判断,若它是闰年,则输出“该年是闰年”:否则,则输出“该年不是闰年” 2)若为非法输入,给出提示,则输出“输入不合法” 3. 测试用例: 编号 输入 期望输出 1 2004 该年是闰年 2    2000 该年是闰年 3 1900 该年不是闰年 4 200,. 输入不合法 4. 测试结果:

关于闰年测试中非法输入的处理

在软件测试技术课当中我们进行了关于闰年的测试,闰年的测试方法如下所示: public static boolean isLeapYear(int year)        {             if (year % 400 == 0)                return true;             if (year % 100 == 0)                return false;             if (year % 4 == 0)         

【软件测试】闰年问题(不考虑非法输入)

问题描述 输入年份,输出输入年份是否为闰年(不考虑非法输入) 一个年份是闰年的条件是: 该年份能被4整除但是不能被100整除或 该年份能被400整除 代码实现 import javax.swing.JOptionPane; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; impo

【软件测试】考虑闰年问题中的非法输入

问题提出 在上一篇中提到了闰年问题的实现以及测试,但是在上篇中并没有提及输入框中如果输入非法输入会发生什么问题 观察如下,当我们在输入框中输入"ab"时: 会出现下面java.lang.NumberFormatException: java.lang.NumberFormatException: For input string: "ab" at java.lang.NumberFormatException.forInputString(Unknown Sourc