Java JUnit测试:改进测试用例,测试数组列表的长度?

Java JUnit测试:改进测试用例,测试数组列表的长度?,java,eclipse,unit-testing,junit,Java,Eclipse,Unit Testing,Junit,下面是我想测试的方法,它基本上是一种允许用户使用ISBN号在图书馆系统中搜索图书的方法: /** * Search by ISBN * @param ISBN * @return ArrayList of found books matching search criteria */ public ArrayList<Book> searchByISBN(String ISBN) { ArrayList<Book&

下面是我想测试的方法,它基本上是一种允许用户使用ISBN号在图书馆系统中搜索图书的方法:

/**
     * Search by ISBN
     * @param ISBN
     * @return ArrayList of found books matching search criteria
     */
    public ArrayList<Book> searchByISBN(String ISBN) {
        ArrayList<Book> results = new ArrayList<Book>();

        for (int loop = 0; loop < allBooks.size(); loop++) {
            if (allBooks.get(loop).getISBN().equals(ISBN)) {
                // add book to search
                results.add(allBooks.get(loop));
            }
        }
        return results;
    }
/**
*按ISBN搜索
*@param-ISBN
*@return ArrayList已找到符合搜索条件的书籍
*/
公共ArrayList searchByISBN(字符串ISBN){
ArrayList结果=新建ArrayList();
for(int-loop=0;loop
下面是我为此方法编写的JUnit测试用例:

@Test
    public void testSearchByISBN() {
        LibrarySearch ls = new LibrarySearch(arrayList);
        ArrayList<Book> results =  ls.searchByISBN(ISBNB2);

        if (results.contains(b2)){
            assertTrue(true);
        } else {
            assertTrue(false);
        }

    }
@测试
公共无效testSearchByISBN(){
LibrarySearch ls=新的LibrarySearch(arrayList);
ArrayList results=ls.searchByISBN(ISBNB2);
如果(结果包含(b2)){
资产真实(真实);
}否则{
资产真(假);
}
}

我的讲师提到测试数组列表的长度,但我不确定这会增加什么功能?

你应该建立一个预期结果的列表,例如:

final List<Book> expected = Arrays.asList(book1, book2, book3);

使用assertj验证结果。生成或编写自己的匹配程序。您可以使用giava轻松构建列表。使用工厂方法创建书籍。你可能会得到这样的结果:

public void should_return_list_of_books_with_matching_ISBN() {

  // given    
  List<Book> allBooks = Lists.newArrayList(
                                   bookWithISBN("1"), 
                                   bookWithISBN("1"),
                                   bookWithISBN("2"));
  // when
  List<Book> result = new LibrarySearch(allBooks).searchByISBN("1");

  //then
  assertThat(result)
                .each(hasISBN("1"))
                .hasSize(2);
}
public void应返回匹配ISBN()的书籍列表{
//给定
List allbook=Lists.newArrayList(
带ISBN(“1”)的账簿,
带ISBN(“1”)的账簿,
书号为ISBN(“2”);
//什么时候
列表结果=新图书馆搜索(allBooks).searchByISBN(“1”);
//然后
断言(结果)
.每个(有ISBN(“1”))
.hasSize(2);
}

First
assertTrue
需要一个布尔值,您可以相应地检查返回值

assertTrue(results.contains(b2));
使用
assertEquals
可以测试两个值的相等性

assertEquals(3, results.size());
另外,请看fge的答案。你也可以看看

assertEquals(3, results.size());