我有UserService
和GET方法,它返回id找到的对象。
@Service
public class UserService {
@Autowired
UserRepository repository;
public User getUserById(Long id) {
return repository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));
}
}
我做了简单的测试如果用户发现:
@ExtendWith(MockitoExtension.class)
class UserServiceTest {
@Mock
private UserRepository userRepository;
@InjectMocks
private UserService userService;
@Test
public void whenGivenId_shouldReturnUser_ifFound() {
User user = new User();
user.setId(89L);
when(userRepository.findById(user.getId())).thenReturn(Optional.of(user));
User expected = userService.getUserById(user.getId());
assertThat(expected).isSameAs(user);
verify(userRepository).findById(user.getId());
}
}
现在我想作一个方法,让我们说:public void shouldThrowExceptionWhenUserDoesntExist()
。如何在JUnit5中制作它?在JUnit4中,我会制作如下内容:
@Test(expected = UserNotFoundException.class)
public void shouldThrowExceptionWhenUserDoesntExist() {
User user = new User();
user.setId(89L);
user.setName("Test Name");
given(userRepository.findById(anyLong())).willReturn(Optional.ofNullable(null));
userService.getUserById(user.getId());
}
由于此@Test(expected = UserNotFoundException.class)
在JUnit5中已过时,因此我在任何地方都找不到处理JUnit5中此类异常的方法。
2条答案
按热度按时间zed5wv101#
这样做
pdkcd3nj2#
您应该使用Assertions.assertThrows()。assertThrows()方法Assert执行所提供的可执行块时会抛出预期类型的异常。它采用以下参数。