即使代码正确,我的 junit 测试仍然失败

My junit tests keep failing even though code is correct

一个月前我刚开始在大学学习 java 编码。这里我只是做了一个非常简单的程序来反转用户输入的字符串。

例如,如果我输入“apple”,它应该 return“elppa”。但是,我的 JUnit 测试在这里总是失败。我尝试在 JUnit 上使用调试器,但它一直抛出异常 java.lang.reflect.InvocationTargetException.

如果有人能帮我解决这个问题,我将不胜感激。提前致谢!! (另外请忽略我愚蠢的变量和 class 名称,我只是在胡闹)

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;
}

测试:

    @Test
    public void testReverse() {
        wechillin all = new wechillin("apple"); 
        all.Reverse();
        assertTrue(all.toString.equals("elppa"));
    }
  1. 首先,您可以将 toString 方法重写为 return 只有单词值。

@Override public String toString() { return word; }

  1. 我建议您为值词创建 getter 并在单元测试中检查该值。请看下面的例子:

     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;
       }
    
       public String getWord() {
         return word;
       }
     }
    

和单元测试:

class wechillinTest {

  @Test
  void reverse() {
    wechillin all = new wechillin("apple");
    all.Reverse();
    assertTrue(all.getWord().equals("elppa"));
  }
}