添加长度输入限制文本框用例生成方法,以及添加一个异常类

This commit is contained in:
彭宇琦 2020-03-15 18:15:24 +08:00
parent e455aa6010
commit 4af1334f09
2 changed files with 245 additions and 10 deletions

View File

@ -0,0 +1,38 @@
package pres.auxiliary.work.n.tcase;
/**
* <p><b>文件名</b>CaseContentException.java</p>
* <p><b>用途</b>用于当用例内容生成有误时抛出的异常</p>
* <p><b>编码时间</b>2020年3月15日下午5:36:02</p>
* <p><b>修改时间</b>2020年3月15日下午5:36:02</p>
* @author 彭宇琦
* @version Ver1.0
* @since JDK 12
*
*/
public class CaseContentException extends RuntimeException {
private static final long serialVersionUID = 1L;
public CaseContentException() {
super();
}
public CaseContentException(String message, Throwable cause, boolean enableSuppression,
boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public CaseContentException(String message, Throwable cause) {
super(message, cause);
}
public CaseContentException(String message) {
super(message);
}
public CaseContentException(Throwable cause) {
super(cause);
}
}

View File

@ -19,27 +19,27 @@ public class InformationCase extends Case {
/**
* 用于标记提交按钮名称
*/
public static final String BUTTON_NAME = "按钮名称";
public static final String BUTTON_NAME = WordType.BUTTON_NAME.getName();
/**
* 用于标记需要添加的信息
*/
public static final String ADD_INFORMATION = "信息";
public static final String ADD_INFORMATION = WordType.ADD_INFORMATION.getName();
/**
* 用于标记添加成功预期的前文
*/
public static final String SUCCESS_EXCEPT_TEXT_START = "成功预期前文";
public static final String SUCCESS_EXCEPT_TEXT_START = WordType.SUCCESS_EXCEPT_TEXT_START.getName();
/**
* 用于标记添加成功预期的后文
*/
public static final String SUCCESS_EXCEPT_TEXT_END = "成功预期后文";
public static final String SUCCESS_EXCEPT_TEXT_END = WordType.SUCCESS_EXCEPT_TEXT_END.getName();
/**
* 用于标记添加失败预期前文
*/
public static final String FAIL_EXCEPT_TEXT_START = "失败预期前文";
public static final String FAIL_EXCEPT_TEXT_START = WordType.FAIL_EXCEPT_TEXT_START.getName();
/**
* 用于标记添加失败预期后文
*/
public static final String FAIL_EXCEPT_TEXT_END = "失败预期后文";
public static final String FAIL_EXCEPT_TEXT_END = WordType.FAIL_EXCEPT_TEXT_END.getName();
/**
* 通过测试用例模板库的xml配置文件来构造InformationCase对象
@ -134,8 +134,11 @@ public class InformationCase extends Case {
}
/**
* 该方法用于生成正确填写所有信息的用例
*
* 用于生成普通文本框测试用例
* @param name 文本框名称控件名称
* @param isMust 是否必填
* @param isRepeat 是否可以与存在的内容重复
* @param inputRuleTypes 输入限制{@link InputRuleType}枚举类
* @return 类本身
*/
public Case addBasicTextboxCase(String name, boolean isMust, boolean isRepeat, InputRuleType... inputRuleTypes) {
@ -144,7 +147,7 @@ public class InformationCase extends Case {
// 存储case标签的name属性内容
String caseName = "addTextboxCase";
//添加控件名称
wordMap.put("控件名称", name);
wordMap.put(WordType.CONTROL_NAME.getName(), name);
//转换输入限制为集合类型
List<InputRuleType> inputRules = Arrays.asList(inputRuleTypes);
@ -168,7 +171,7 @@ public class InformationCase extends Case {
for (InputRuleType inputRule : inputRules) {
inputRuleText += (inputRule.getName() + "");
}
wordMap.put("输入限制", inputRuleText.substring(0, inputRuleText.length() - 1));
wordMap.put(WordType.INPUT_RULE.getName(), inputRuleText.substring(0, inputRuleText.length() - 1));
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "3"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2"));
}
@ -187,4 +190,198 @@ public class InformationCase extends Case {
return this;
}
/**
* 用于生成带长度限制的文本框测试用例当只有单边限制时则其中一个参数传入小于等于0的数字即可例如<br>
* 1.输入长度限制为2~10个字符时addLengthRuleTextboxCase(..., 2, 10, ...)<br>
* 2.输入长度限制为最多输入10个字符时addLengthRuleTextboxCase(..., 0, 10, ...)<br>
* 3.输入长度限制为最少输入2个字符时addLengthRuleTextboxCase(..., 2, 0, ...)<br>
* 注意若两个参数传入一样且都不为0则等价于第2中情况若两个参数都小于等于0时则抛出异常
* @param name 文本框名称控件名称
* @param isMust 是否必填
* @param isRepeat 是否可以与存在的内容重复
* @param minLen 最小输入长度限制
* @param maxLen 最大输入长度限制
* @param inputRuleTypes 输入限制{@link InputRuleType}枚举类
* @return 类本身
* @throws CaseContentException 当限制参数传入有误时抛出
*/
public Case addLengthRuleTextboxCase(String name, boolean isMust, boolean isRepeat, int minLen, int maxLen, InputRuleType... inputRuleTypes) {
//清空字段的内容
clearFieldText();
// 存储case标签的name属性内容
String caseName = "addTextboxCase";
//添加控件名称
wordMap.put(WordType.CONTROL_NAME.getName(), name);
//转换输入限制为集合类型
List<InputRuleType> inputRules = Arrays.asList(inputRuleTypes);
//存储标题信息
addFieldText(LabelType.TITLE, getLabelText(caseName, LabelType.TITLE, "1"));
//----------------------------------------------------------------------
//存储步骤与预期信息
//不填写或只输入空格
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "1"));
//根据是否必填来判断填入成功或失败预期
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, isMust ? "2" : "1"));
//填写特殊字符或HTML代码
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "2"));
//根据是否存在输入
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, inputRules.size() == 0 || inputRules.contains(InputRuleType.SPE) ? "1" : "2"));
//输入非限制的字符
if (inputRules.size() != 0) {
String inputRuleText = "";
for (InputRuleType inputRule : inputRules) {
inputRuleText += (inputRule.getName() + "");
}
wordMap.put(WordType.INPUT_RULE.getName(), inputRuleText.substring(0, inputRuleText.length() - 1));
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "3"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2"));
}
//填写存在的内容
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "12"));
//根据是否必填来判断填入成功或失败预期
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, isRepeat ? "2" : "1"));
//添加输入长度限制相关的测试用例
//判断传入的限制参数是否有小于0的参数参数小于0则直接转换为0
minLen = minLen < 0 ? 0 : minLen;
maxLen = maxLen < 0 ? 0 : maxLen;
//判断长度是否都为0若都为0则抛出异常
if (minLen == 0 && maxLen == 0) {
throw new CaseContentException("长度限制不能全为0");
} else if (minLen != 0 && maxLen != 0) {
//若都不为0则将相应的内容进行存储且判断最大长度与最小长度是否传反若传反则调换顺序
wordMap.put(WordType.INPUT_MIN_LENGTH.getName(), String.valueOf(minLen < maxLen ? minLen : maxLen));
wordMap.put(WordType.INPUT_MAX_LENGTH.getName(), String.valueOf(minLen < maxLen ? maxLen : minLen));
//小于最小限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "4"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2"));
//等于最小限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "5"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1"));
//大于最大限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "6"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2"));
//等于最大限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "7"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1"));
} else if (minLen == 0 && maxLen != 0 || minLen == maxLen) {
//存储最大输入限制
wordMap.put(WordType.INPUT_MAX_LENGTH.getName(), String.valueOf(maxLen));
//大于最大限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "6"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2"));
//等于最大限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "7"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1"));
} else {
//存储最小输入限制
wordMap.put(WordType.INPUT_MIN_LENGTH.getName(), String.valueOf(minLen));
//小于最小限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "4"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "2"));
//等于最小限制
addFieldText(LabelType.STEP, getLabelText(caseName, LabelType.STEP, "5"));
addFieldText(LabelType.EXCEPT, getLabelText(caseName, LabelType.EXCEPT, "1"));
}
//----------------------------------------------------------------------
//存储前置条件信息
addFieldText(LabelType.PRECONDITION, getAllLabelText(caseName, LabelType.PRECONDITION));
//存储关键词信息
addFieldText(LabelType.KEY, getAllLabelText(caseName, LabelType.KEY));
//存储优先级信息
addFieldText(LabelType.RANK, getLabelText(caseName, LabelType.RANK, isMust ? "1" : "2"));
return this;
}
/**
* <p><b>文件名</b>InformationCase.java</p>
* <p><b>用途</b>枚举在预设测试用例中需要被替换的词语</p>
* <p><b>编码时间</b>2020年3月15日下午5:50:28</p>
* <p><b>修改时间</b>2020年3月15日下午5:50:28</p>
* @author
* @version Ver1.0
* @since JDK 12
*
*/
private enum WordType {
/**
* 提交按钮名称
*/
BUTTON_NAME("按钮名称"),
/**
* 需要添加的信息
*/
ADD_INFORMATION("信息"),
/**
* 成功预期的前文
*/
SUCCESS_EXCEPT_TEXT_START("成功预期前文"),
/**
* 成功预期的后文
*/
SUCCESS_EXCEPT_TEXT_END("成功预期后文"),
/**
* 失败预期前文
*/
FAIL_EXCEPT_TEXT_START("失败预期前文"),
/**
* 失败预期后文
*/
FAIL_EXCEPT_TEXT_END("失败预期后文"),
/**
* 控件名称
*/
CONTROL_NAME("控件名称"),
/**
* 输入限制
*/
INPUT_RULE("输入限制"),
/**
* 最长长度输入限制
*/
INPUT_MAX_LENGTH("最长长度限制"),
/**
* 最短长度输入限制
*/
INPUT_MIN_LENGTH("最短长度限制"),
/**
* 最大数字输入限制
*/
INPUT_MAX_NUMBER("数字最大限制"),
/**
* 最小数字输入限制
*/
INPUT_MIN_NUMBER("数字最小限制"),
;
/**
* 存储需要替换的单词名称
*/
private String name;
/**
* 初始化枚举值
* @param name 枚举的名称
*/
private WordType(String name) {
this.name = name;
}
/**
* 返回需要替换的单词的名称
* @return 需要替换的单词的名称
*/
public String getName() {
return name;
}
}
}