gpt4 book ai didi

java - JUnit 测试。创建列表会影响其他列表的大小。真的真的很奇怪

转载 作者:行者123 更新时间:2023-12-02 06:33:28 24 4
gpt4 key购买 nike

这是我的测试:

@Test
public void returnsAllItemsInStock() {
List<Item> demoItems = new ArrayList<Item>();

Item demoItemOne = new Item();
demoItemOne.setQuantity(0);

Item demoItemTwo = new Item();
demoItemTwo.setQuantity(17);

demoItems.add(demoItemOne);
demoItems.add(demoItemTwo); // List size currently 2

Mockito.when(itemRepository.findAll()).thenReturn(demoItems);

List<Item> items = inventoryService.allItemsInStock();// Here demoItems size somehow changes to 1

Assert.assertEquals("List's size expected not to match", items.size(), demoItems.size()); // This one should fail because sizes shouldn't be equal, but they are..
}

这是我的服务实现:

@Override
@Transactional
public List<Item> allItemsInStock() {
List<Item> items = new ArrayList<Item>();
items = (List<Item>) itemRepository.findAll();

for (Iterator<Item> it = items.iterator(); it.hasNext();) {
Item item = it.next();
if (item.getQuantity() <= 0) {
it.remove();
}
}


return items;
}

我在评论中解释了问题。检查我的测试。

最佳答案

demoItems 列表发生更改,因为您将其用作项目列表:您从服务的 findAll() 方法返回 demoItems

然后您可以删除数量为零的项目。他们是同一个名单。一点也不奇怪。

关于java - JUnit 测试。创建列表会影响其他列表的大小。真的真的很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com