java - 使用 ArrayList 的方法的 JUnit 测试出现字符串错误

标签 java arraylist junit junit4

这是我得到的错误跟踪:

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/

相关文章:

java - Spring Cloud Stream Test 在消息负载中硬编码 "Hello World"

java - java集合中重复删除背后的机制是什么(例如LinkedHashSet)

java - Junit ExpectedException 失败并显示解释性消息

java - Java泛型什么时候需要<?扩展 T> 而不是 <T> ,切换有什么缺点吗?

java - 事件修补线程和工作线程

java - 库重载的方法不用重新编译就可以使用吗?

java - 如何在 iText 中的 PDFPTable 中显示动态列表

java - 两个 Java 字符串在不相等时表示它们相等

java - 如何在 JUnit spring 测试中只 Autowiring 一个特定的类?

java - 为什么我在 java 中收到死代码警告?