使用ArrayList的方法的JUnit测试得到一个String错误



这是我得到的错误跟踪:

java.lang.AssertionError: expected: java.lang.String<[{Song: title=Always artist=Blink 182}]> but was: java.util.ArrayList<[{Song: title=Always artist=Blink 182}]>

当我尝试在测试用例

中运行这段代码时
assertEquals("[{Song: title=Always artist=Blink 182}]", p.getSongList());

p.getSongList是一个返回和ArrayList<Song>的方法。到目前为止,我只添加了一首歌曲,但我对如何将预期输出更改为java.util.ArrayList而不是java.lang.String感到困惑。

您正在比较ArrayList实例与所需输出的字符串表示(即,如果您在输出上运行toString(),您将获得的String)。相反,您应该只构造您期望的实际输出。

你的问题不提供你的Song类的代码,所以我猜它只是一个POJO:

Song expectedSong = new Song();
expectedSong.setTitle("Always");
expectedSong.setArtist("Blink 182");
ArrayList<Song> expectedList = new ArrayList<>(1);
expectedList.add(song);
assertEquals(expectedList, p.getSongList());

相关内容

最新更新