Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尽管有相同的列表,assertEquals测试仍失败_Java_Spring Boot_Integration Testing_Assertion - Fatal编程技术网

Java 尽管有相同的列表,assertEquals测试仍失败

Java 尽管有相同的列表,assertEquals测试仍失败,java,spring-boot,integration-testing,assertion,Java,Spring Boot,Integration Testing,Assertion,我想测试两个列表的相等性——实际列表(由测试方法返回)和预期列表(由我硬编码)。 我看了一个小时这两份清单,看不出它们之间有什么区别 堆栈跟踪: java.lang.AssertionError: expected: java.util.Arrays$ArrayList<[Book{title='Pokrzyk', author='Puzyńska Katarzyna'}, Book{title='Odbiorę ci wszystko', author='Lillegraven Ruth

我想测试两个列表的相等性——实际列表(由测试方法返回)和预期列表(由我硬编码)。 我看了一个小时这两份清单,看不出它们之间有什么区别

堆栈跟踪:

java.lang.AssertionError: expected: java.util.Arrays$ArrayList<[Book{title='Pokrzyk', author='Puzyńska Katarzyna'}, Book{title='Odbiorę ci wszystko', author='Lillegraven Ruth'}, Book{title='Nóż. Harry Hole. Tom 12', author='Nesbo Jo'}, Book{title='Za zamkniętymi drzwiami', author='Paris B.A.'}, Book{title='Coraz większy mrok', author='Hoover Colleen'}, Book{title='Ta, która musi umrzeć', author='Lagercrantz David'}, Book{title='Teraz zaśniesz', author='Taylor C. L.'}, Book{title='Na skraju załamania', author='Paris B.A.'}, Book{title='Listy zza grobu', author='Mróz Remigiusz'}, Book{title='Rewizja. Joanna Chyłka. Tom 3', author='Mróz Remigiusz'}, Book{title='Odwet', author='Severski Vincent V.'}, Book{title='Immunitet. Joanna Chyłka. Tom 4', author='Mróz Remigiusz'}, Book{title='Inwigilacja. Joanna Chyłka. Tom 5', author='Mróz Remigiusz'}, Book{title='Zniknięcie Annie Thorne', author='Tudor C. J.'}, Book{title='Kontratyp. Joanna Chyłka. Tom 8', author='Mróz Remigiusz'}]> but was: java.util.ArrayList<[Book{title='Pokrzyk', author='Puzyńska Katarzyna'}, Book{title='Odbiorę ci wszystko', author='Lillegraven Ruth'}, Book{title='Nóż. Harry Hole. Tom 12', author='Nesbo Jo'}, Book{title='Za zamkniętymi drzwiami', author='Paris B.A.'}, Book{title='Coraz większy mrok', author='Hoover Colleen'}, Book{title='Ta, która musi umrzeć', author='Lagercrantz David'}, Book{title='Teraz zaśniesz', author='Taylor C. L.'}, Book{title='Na skraju załamania', author='Paris B.A.'}, Book{title='Listy zza grobu', author='Mróz Remigiusz'}, Book{title='Rewizja. Joanna Chyłka. Tom 3', author='Mróz Remigiusz'}, Book{title='Odwet', author='Severski Vincent V.'}, Book{title='Immunitet. Joanna Chyłka. Tom 4', author='Mróz Remigiusz'}, Book{title='Inwigilacja. Joanna Chyłka. Tom 5', author='Mróz Remigiusz'}, Book{title='Zniknięcie Annie Thorne', author='Tudor C. J.'}, Book{title='Kontratyp. Joanna Chyłka. Tom 8', author='Mróz Remigiusz'}]>
Expected :java.util.Arrays$ArrayList<[Book{title='Pokrzyk', author='Puzyńska Katarzyna'}, Book{title='Odbiorę ci wszystko', author='Lillegraven Ruth'}, Book{title='Nóż. Harry Hole. Tom 12', author='Nesbo Jo'}, Book{title='Za zamkniętymi drzwiami', author='Paris B.A.'}, Book{title='Coraz większy mrok', author='Hoover Colleen'}, Book{title='Ta, która musi umrzeć', author='Lagercrantz David'}, Book{title='Teraz zaśniesz', author='Taylor C. L.'}, Book{title='Na skraju załamania', author='Paris B.A.'}, Book{title='Listy zza grobu', author='Mróz Remigiusz'}, Book{title='Rewizja. Joanna Chyłka. Tom 3', author='Mróz Remigiusz'}, Book{title='Odwet', author='Severski Vincent V.'}, Book{title='Immunitet. Joanna Chyłka. Tom 4', author='Mróz Remigiusz'}, Book{title='Inwigilacja. Joanna Chyłka. Tom 5', author='Mróz Remigiusz'}, Book{title='Zniknięcie Annie Thorne', author='Tudor C. J.'}, Book{title='Kontratyp. Joanna Chyłka. Tom 8', author='Mróz Remigiusz'}]> 
Actual   :java.util.ArrayList<[Book{title='Pokrzyk', author='Puzyńska Katarzyna'}, Book{title='Odbiorę ci wszystko', author='Lillegraven Ruth'}, Book{title='Nóż. Harry Hole. Tom 12', author='Nesbo Jo'}, Book{title='Za zamkniętymi drzwiami', author='Paris B.A.'}, Book{title='Coraz większy mrok', author='Hoover Colleen'}, Book{title='Ta, która musi umrzeć', author='Lagercrantz David'}, Book{title='Teraz zaśniesz', author='Taylor C. L.'}, Book{title='Na skraju załamania', author='Paris B.A.'}, Book{title='Listy zza grobu', author='Mróz Remigiusz'}, Book{title='Rewizja. Joanna Chyłka. Tom 3', author='Mróz Remigiusz'}, Book{title='Odwet', author='Severski Vincent V.'}, Book{title='Immunitet. Joanna Chyłka. Tom 4', author='Mróz Remigiusz'}, Book{title='Inwigilacja. Joanna Chyłka. Tom 5', author='Mróz Remigiusz'}, Book{title='Zniknięcie Annie Thorne', author='Tudor C. J.'}, Book{title='Kontratyp. Joanna Chyłka. Tom 8', author='Mróz Remigiusz'}]>
java.lang.AssertionError:应为:java.util.Arrays$ArrayList,但为:java.util.ArrayList
应为:java.util.Arrays$ArrayList
实际值:java.util.ArrayList
我看到的唯一区别是,在预期行的末尾是空白,我不知道为什么,但我认为它不应该通过我的测试,因为它测试元素是否相同

测试:

package bookstore.scraper.fetcher.empik;
进口书店;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.junit.Test;
导入org.junit.runner.RunWith;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.boot.test.context.SpringBootTest;
导入org.springframework.test.context.junit4.SpringRunner;
导入java.io.File;
导入java.io.IOException;
导入java.net.URISyntaxException;
导入java.util.array;
导入java.util.List;
导入静态org.junit.Assert.assertEquals;
@春靴测试
@RunWith(SpringRunner.class)
公共类EmpikFetchingBookService测试{
@自动连线
EmpikFetchingBookService EmpikFetchingBookService;
@试验
public void get15BooksFromCrimeCategory()引发IOException{
File in=getFile(“/crimecategorympik.html”);
文档doc=Jsoup.parse(在“UTF-8”中);
List actualBooks=empikFetchingBookService.get15BooksFromCategory(文档);
列出期望的书籍=准备15Crimebooks();
资产质量(预期账簿、实际账簿);
}
私有静态文件getFile(字符串resourceName){
试一试{
返回新文件(EmpikFetchingBookServiceTest.class.getResource(resourceName.toURI());
}捕获(URISyntaxException e){
抛出新的非法状态异常(e);
}
}
私人清单编制15主题书(){
返回数组.asList(
新书.BookBuilder().withAuthor(“Puzyńska Katarzyna”).withTitle(“Pokrzyk”).build(),
新书.BookBuilder().带作者(“Lillegraven Ruth”).带标题(“Odbioręci wszystko”).build(),
新书。BookBuilder()。带作者(“Nesbo Jo”)。带标题(“Nóż.Harry Hole.Tom 12”)。build(),
新书。BookBuilder()。带作者(“巴黎B.A.)。带标题(“Za zamkniętymi drzwiami”)。build(),
新书。BookBuilder()。作者(“胡佛·科琳”)。书名(“Coraz większy mrok”)。build(),
新书。BookBuilder()。带作者(“Lagercrantz David”)。带标题(“Ta,która musi umrzeć”)。build(),
新书。BookBuilder()。作者(“Taylor C.L.”)。书名(“Teraz zaśniesz”)。build(),
新书。BookBuilder()。带作者(“巴黎文学学士”)。带标题(“Na skraju załamania”)。build(),
新书。BookBuilder()。带作者(“Mróz Remigiusz”)。带标题(“Listy zza grobu”)。build(),
新书。BookBuilder()。带作者(“Mróz Remigiusz”)。带标题(“Rewizja.Joanna Chyłka.Tom 3”)。build(),
新书。BookBuilder()。带作者(“Severski Vincent V.)。带标题(“Odwet”)。build(),
新书。BookBuilder()。作者(“Mróz Remigiusz”)。书名(“Immunitet.Joanna Chyłka.Tom 4”)。构建(),
新书。BookBuilder()。带作者(“Mróz Remigiusz”)。带标题(“Inwigilacja.Joanna Chyłka.Tom 5”)。build(),
新书。BookBuilder()。带作者(“Tudor C.J.”)。带标题(“Zniknięcie Annie Thorne”)。build(),
新书。BookBuilder()。带作者(“Mróz Remigiusz”)。带标题(“Kontratyp.Joanna Chyłka.Tom 8”)。build();
}
}

如前所述,assertEquals方法使用equals方法,比较实际对象实例是否相同。要解决您的问题,您应该重写equal()方法以确定值本身是否相同

>添加到@ OMOSHIROIII的回答,考虑使用AdjtJ作为断言的依赖项。有一整套关于断言列表的文档,您还可以使用以下内容断言对象字段值:

assertThat(expectedObject).isEqualToComparingFieldByField(actualObject);

你能为Book共享equals方法吗?为什么它比“传统”的assertEquals更好?如果你有两个对象,都是field1和field2,您希望根据两个对象的字段值比较这两个对象:例如,您可以使用我展示的
isEqualToComparingFieldByField
方法,而不是分别比较field1和field1,field2和field2。依赖项有许多类似的助手,并且是断言的标准。。。它甚至包含在Spring boot starter测试依赖项中。
assertThat(expectedObject).isEqualToComparingFieldByField(actualObject);