我有一个库应用程序,正在尝试为其中的方法创建测试。正在搜索的列表中的图书由书名、作者和 ISBN 号组成。 ISBN 搜索方法的测试有效,但标题和作者搜索测试失败。该测试是将正在搜索的字符串与列表中的整个对象而不是标题字符串进行比较。
正在测试的方法:
public ArrayList<Book> searchByTitle(String termToFind)
{
ArrayList<Book> booksToReturn = new ArrayList<>();
for (Book book : bookshelf)
{
if (book.getTitle().contains(termToFind))
{
booksToReturn.add(book);
}
}
return booksToReturn;
}
我写的测试:
@Test
public void testLibrary_searchTitle()
{
assertEquals("Shutter Island", library1.searchByTitle("Shutter Island"));
}
我收到的错误:
预期:< Shutter Island >但实际是:<[Shutter Island by Dennis Lehane. ISBN: 2003003]>
在
assertEquals
比较中,您将预期的标题(即 String
)与 Book
对象进行比较,而不是与该书的标题进行比较。
相反,您可能想将预期标题与实际标题进行比较:
assertEquals("Shutter Island", library1.searchByTitle("Shutter Island").getTitle());