如何测试Setter/Getter并在main输出?TripleString类Mutator测试疑问
解答:TripleString类的Setter测试与结果输出
没问题,你的需求完全可以实现!咱们一步步来解决你的几个核心问题:
1. 直接获取Setter返回值的可行性
当然可以直接通过triple1.setString1(xxx)这类调用拿到返回的布尔值——因为你的setString1方法本身就设计为返回boolean类型,用来告知调用者设置操作是否成功。这正是这类带状态反馈的mutator方法的优势,不需要额外写判断长度的逻辑,直接用方法返回值即可。
2. 补全TripleString类的完整代码
你提供的代码缺少成员变量、常量定义和部分方法(比如setString2、setString3),我先补全这些必要部分,确保代码可以正常运行:
public class TripleString { // 定义常量 private static final String DEFAULT_STRING = "default"; private static final int MIN_LEN = 1; private static final int MAX_LEN = 20; // 成员变量 private String string1; private String string2; private String string3; // 无参构造器 public TripleString() { string1 = DEFAULT_STRING; string2 = DEFAULT_STRING; string3 = DEFAULT_STRING; } // 带参构造器 public TripleString(String str1, String str2, String str3) { string1 = DEFAULT_STRING; string2 = DEFAULT_STRING; string3 = DEFAULT_STRING; this.setString1(str1); this.setString2(str2); this.setString3(str3); } // setString1方法(你提供的代码) public boolean setString1(String str1) { if (str1.length() < MIN_LEN || str1.length() > MAX_LEN) { return false; } else { string1 = str1; return true; } } // 补全setString2和setString3方法 public boolean setString2(String str2) { if (str2.length() < MIN_LEN || str2.length() > MAX_LEN) { return false; } else { string2 = str2; return true; } } public boolean setString3(String str3) { if (str3.length() < MIN_LEN || str3.length() > MAX_LEN) { return false; } else { string3 = str3; return true; } } // getString1方法(你提供的代码) public String getString1() { return string1; } // 补全其他Getter方法 public String getString2() { return string2; } public String getString3() { return string3; } // toString方法(你提供的代码) public String toString(){ return "string1 = "+string1+"; string2 = "+string2+"; string3 = "+string3 + "\n"; } }
3. 编写测试代码(含main方法)
下面是包含测试逻辑的主类,我们会执行3次显式mutator测试,每次调用setString1(或其他Setter),用if/else判断返回值,输出对应的成功/失败消息,同时用Getter和toString验证结果:
public class TripleStringTest { public static void main(String[] args) { // 创建TripleString实例 TripleString triple1 = new TripleString(); // 测试1:设置合法长度的字符串(成功场景) boolean setResult1 = triple1.setString1("Hello World"); if (setResult1) { System.out.println("测试1成功:string1已设置为「" + triple1.getString1() + "」"); } else { System.out.println("测试1失败:字符串长度不符合要求"); } // 测试2:设置长度为0的字符串(失败场景) boolean setResult2 = triple1.setString1(""); if (setResult2) { System.out.println("测试2成功:string1已设置为「" + triple1.getString1() + "」"); } else { System.out.println("测试2失败:字符串长度不符合要求(过短)"); } // 测试3:设置超长字符串(失败场景) boolean setResult3 = triple1.setString1("这是一个超过20个字符的测试字符串"); if (setResult3) { System.out.println("测试3成功:string1已设置为「" + triple1.getString1() + "」"); } else { System.out.println("测试3失败:字符串长度不符合要求(过长)"); } // 输出当前对象的完整状态 System.out.println("\n当前TripleString对象的状态:"); System.out.print(triple1.toString()); } }
4. 代码解释
- 获取Setter返回值:每次调用
triple1.setString1(xxx)时,直接把返回值赋值给boolean变量(比如setResult1),然后用if/else判断即可,完全不需要额外写长度判断逻辑。 - 多次mutator测试:上面的代码做了3次测试,覆盖了成功、过短、过长三种场景,满足“两次及以上显式mutator测试”的要求。
- 验证结果:用
getString1()可以单独获取string1的值,用toString()可以直接输出整个对象的状态,方便验证Setter操作的效果。
内容的提问来源于stack exchange,提问作者Shengyan Xu
相关产品推荐
相关产品推荐

