我正在尝试创建一个断言两个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);
}
}```
答案 0 :(得分:0)
是的,我偶然跌倒了!首先,如果要进行单元测试,只需遍历整个列表并声明每个元素或自己构建String。我想我在日食中看到了这一点。它以某种方式运行自己的junit版本,我认为从命令行中的mvn test运行时测试通过。
简短回答您的问题:
如果可以,您可以使用Hamcrest:Assert about a List in Junit
重复:
for (int i = 0; i< list1.size; i++) { assertEquals(list1.get(i), list2.get(i)); }
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
list1.forEach(sb1::append);
list2.forEach(sb1::append);
assertEquals(sb1.toString(), sb2.toString()
首选方式是1或3。