You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何测试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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:00:50