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

刚学Java一月,字符串反转JUnit测试失败求助(含代码)

解决你的字符串反转JUnit测试失败问题

嘿,刚学Java一个月就上手写测试,已经很棒啦!咱们一步步拆解你的问题:

首先,你的代码里有几个关键问题,直接导致了测试失败和InvocationTargetException异常:

1. toString调用错误+未重写toString方法

你在测试里写了all.toString.equals("elppa"),这里藏着两个坑:

  • 少了方法调用的括号:应该是all.toString(),不然你是在拿toString这个方法对象本身和字符串"elppa"做比较,完全不是一回事,这也是抛出异常的主要原因。
  • 你的类没有重写Object类的默认toString()方法,默认的toString会返回类似wechillin@123abc的字符串(类名+哈希值),永远不可能等于"elppa"。

2. 命名规范小细节(不影响功能,但建议遵循)

Java里类名要大驼峰(比如Wechillin而非wechillin),方法名要小驼峰(reverse而非Reverse),这样代码更符合行业习惯,也更容易被别人读懂。


修正后的代码示例

方案1:保留原结构,重写toString并修正调用

// 修正类名和方法名,重写toString方法
public class Wechillin {
    public String word;

    // 构造方法名必须和类名一致
    public Wechillin(String wordin) {
        word = wordin;
    }

    public void reverse() {
        String newword = "";
        for (int i = word.length() - 1; i >= 0; i--) {
            newword += word.charAt(i);
        }
        word = newword;
    }

    // 重写toString,返回当前的word值
    @Override
    public String toString() {
        return word;
    }
}

对应的测试代码:

@Test
public void testReverse() {
    Wechillin all = new Wechillin("apple");
    all.reverse();
    // 用assertEquals比assertTrue更直观,失败时能直接看到预期和实际值的差异
    assertEquals("elppa", all.toString());
}

方案2:让reverse方法直接返回结果(更灵活)

如果不想依赖成员变量,可以修改方法让它直接返回反转后的字符串,这样代码逻辑更清晰:

public class Wechillin {
    public String reverse(String word) {
        String newword = "";
        for (int i = word.length() - 1; i >= 0; i--) {
            newword += word.charAt(i);
        }
        return newword;
    }
}

测试代码会更简洁:

@Test
public void testReverse() {
    Wechillin all = new Wechillin();
    String result = all.reverse("apple");
    assertEquals("elppa", result);
}

最后提个小优化:循环里用+=拼接字符串效率不高,因为String是不可变的,每次拼接都会创建新对象。刚学的话可以先不管,等后面接触StringBuilder后,可以改成一行代码搞定反转:

public String reverse(String word) {
    return new StringBuilder(word).reverse().toString();
}

不过你自己写循环练习的过程,其实更能帮你理解字符串的底层逻辑哦!

内容的提问来源于stack exchange,提问作者user14604959

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:42:28