这是我得到的错误跟踪:
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
是一个返回 and ArrayList<Song>
的方法。到目前为止我只添加了一首歌曲,但我对如何将预期输出更改为 java.util.ArrayList
感到困惑而不是java.lang.String
。任何帮助将不胜感激。
最佳答案
您正在将 ArrayList
实例与所需输出的字符串表示形式(即,运行以下命令时得到的String
)进行比较输出上的 toString()
)。相反,您应该只构建您期望的实际输出。
您的问题没有提供您的 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());
关于java - 使用 ArrayList 的方法的 JUnit 测试出现字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874913/