如何消除ArrayList之后的空白?

时间:2019-07-18 20:28:39

标签: java unit-testing arraylist junit

我正在尝试创建一个断言两个ArrayList相等的测试。运行测试时,我收到一个错误,期望与实际之间存在一个差异:arraylist的末尾有一个空格。

问题不是由arraylist内的任何东西引起的,问题出在arraylist关闭之后。据我所知,在Java或junit测试中,没有修剪功能可以忽略空格。

ArrayList<Quote> expected = new ArrayList<>();

        Quote q1 = new Quote("Test Test", "This is a quote.");
        Quote q2 = new Quote("Author Two", "Quote 2.");
        Quote q3 = new Quote("Unknown", "This quote does not have an author.");
        Quote q4 = new Quote("Author Three-three", "Quote 3.");

        expected.add(q1); expected.add(q2); expected.add(q3); expected.add(q4);

这给我的是:java.util.ArrayList <[这是一个引号。 -测试测试,引用2。-作者二,此引用没有作者。 -未知,引用3。-作者三三]> _

(我在下划线处加了下划线)

我期望的是:java.util.ArrayList <[这是一个引号。 -测试测试,引用2。-作者二,此引用没有作者。 -未知,引用3。-作者三三]>

这不包括空格。

我不知道为什么得到空白,也不知道如何摆脱空白。任何帮助将不胜感激。

有关更多上下文,请参见整个测试器文件

public class ImportQuotesTest {

    BufferedReader reader;
    @Before
    public void setUp() throws Exception {
        File file = new File("C:\\Users\\homba\\Documents\\QuotesProject\\src\\ImportQuotesTest.txt");

        reader = new BufferedReader(new FileReader(file));
    }

    @Test
    public void fillList() throws IOException {
        ArrayList<Quote> actual = ImportQuotes.fillList(reader);
        ArrayList<Quote> expected = new ArrayList<>();

        Quote q1 = new Quote("Test Test", "This is a quote.");
        Quote q2 = new Quote("Author Two", "Quote 2.");
        Quote q3 = new Quote("Unknown", "This quote does not have an author.");
        Quote q4 = new Quote("Author Three-three", "Quote 3.");

        expected.add(q1); expected.add(q2); expected.add(q3); expected.add(q4);

        Assert.assertEquals(expected,actual);
    }
}```

1 个答案:

答案 0 :(得分:0)

是的,我偶然跌倒了!首先,如果要进行单元测试,只需遍历整个列表并声明每个元素或自己构建String。我想我在日食中看到了这一点。它以某种方式运行自己的junit版本,我认为从命令行中的mvn test运行时测试通过。

简短回答您的问题:

  1. 如果可以,您可以使用Hamcrest:Assert about a List in Junit

  2. 重复: for (int i = 0; i< list1.size; i++) { assertEquals(list1.get(i), list2.get(i)); }

  3. StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); list1.forEach(sb1::append); list2.forEach(sb1::append); assertEquals(sb1.toString(), sb2.toString()

首选方式是1或3。