Assert.assertEquals 没有正确比较字符串

Assert.assertEquals didn't compares String right way

我目前正在研究一个 udemy java 编程 class 并且正在努力练习。

这里是大师灵魂:

public class Bonbon {
    
    public static void bonbonRechner(){
        //Hier den Code der Main-Methode einfügen
        String Jan = "Jan";
        String Lisa = "Lisa";
        String Tom = "Tom";
        int Bonbons = 100;
        int JanBonbon = 6;
        int LisaBonbon = 11;
        int TomBonbon = 8;
        Bonbons = Bonbons - JanBonbon - LisaBonbon - TomBonbon;

        System.out.println(Jan + ": " + JanBonbon + ", " + Lisa + ": " + LisaBonbon + ", "
            + Tom + ": " + TomBonbon + ", Restlichen Bonbons: " + Bonbons);
        
    }
    public static void main(String[] args) {
        bonbonRechner();
    }
}

它应该打印 Jan: 6, Lisa: 11, Tom: 8, Restlichen Bonbons:75

我这样配置 Evaluate.java:

import org.junit.Test;
import org.junit.Assert;
import com.udemy.ucp.*;
import com.udemy.ucp.IOHelper;

public class Evaluate {
    Bonbon bw = new Bonbon();
    IOHelper helper = new IOHelper();
    @Test
    public void testExercise() {
        helper.resetStdOut();
        bw.bonbonRechner();
        Assert.assertEquals("Not right", 
            "Jan: 6, Lisa: 11, Tom: 8, Restlichen Bonbons: 75", helper.getOutput());
    }
}

我的控制台是这样说的:

Console

Not right expected:<...stlichen Bonbons: 75[]> but was:<...stlichen Bonbons: 75[

Your output

Jan: 6, Lisa: 11, Tom: 8, Restlichen Bonbons: 75

]>

有什么想法可以解决输出中缺少 ]> 的问题吗?

提前致谢!

System.out.println 在您的文本后附加一个新行 \n,这是比较的一部分,因为 StdOut 的所有内容都由您的 IOHelper 捕获,但您期望的字符串不包含新行。您可以使用 System.out.print 来避免这种情况。