gpt4 book ai didi

java - jUnit单元测试空指针异常而不是自定义异常

转载 作者:行者123 更新时间:2023-12-01 13:52:01 26 4
gpt4 key购买 nike

这是我的测试:

@Test(expected = NoItemsInStockException.class)
public void cantTakeItemIfNoneInStock() throws NoItemsInStockException {
User user = new User();
user.setEmail("example@example.com");
user.setDebt(0);

Item item = new Item();
item.setId(1L);
item.setPrice(10);
item.setQuantity(0);

Mockito.when(userRepository.findByEmail(user.getEmail())).thenReturn(user);
Mockito.when(itemRepository.findOne(item.getId())).thenReturn(item);

scanService.takeItem(user.getEmail(), user.getId());
}

这是我的服务实现:

@Override
@Transactional
public void takeItem(final String userEmail, final Long itemId) throws NoItemsInStockException {
User user = userRepository.findByEmail(userEmail);
Item item = itemRepository.findOne(itemId);

if (item.getQuantity() <= 0) {
throw new NoItemsInStockException("No items left");
}

Scan scan = new Scan();
scan.setDate(new Date());
scan.setUser(user);
scan.setItem(item);
scanRepository.save(scan);

user.setDebt(user.getDebt() + item.getPrice());
item.setQuantity(item.getQuantity() - 1);
}

这是我的异常(exception):

public class NoItemsInStockException extends Exception {
public NoItemsInStockException() {
}

public NoItemsInStockException(final String message) {
super(message);
}
}

此测试获取 NullPointerException 而不是 NoItemsInStockException,因此失败。我似乎不明白这里出了什么问题?

最佳答案

scanService.takeItem(user.getEmail(), user.getId());

你的意思是item.getId(),加上User没有设置id。

关于java - jUnit单元测试空指针异常而不是自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890407/

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