verify 用于检查被测试代码是否按照预期行为执行 。如果要测试的方法是 public void 类型,可以使用 verify 进行验证 。
断言用于验证预期结果 。
@ExtendWith(MockitoExtension.class)class UserServiceImplTest {@InjectMocksprivate UserServiceImpl userService;@Mockprivate UserRepository userRepository;private User user;public static final String MOCK_EMAIL = "mert@bahardogan.com";@BeforeEachvoid setUp() {user = new User();System.out.println("init");}@AfterEachvoid teardown() {System.out.println("teardown");}@ParameterizedTest@ValueSource(strings = {"mert@bahardogan.com", "info@gmail.com"})@DisplayName("Happy Path: save user use cases")void givenCorrectUser_whenSaveUser_thenReturnUserEmail(String email) {// givenuser.setUserName("mertbahardogan").setEmail(email).setPassword("pass");User savedUser = new User().setEmail(email);doReturn(savedUser).when(userRepository).save(any());// whenString savedUserEmail = userService.saveUser(user);// thenverify(userRepository,times(1)).findByEmail(anyString());verify(userRepository,times(1)).save(any());assertEquals(email, savedUserEmail);}@Test@DisplayName("Exception Test: user email must not be null case")void givenNullUserEmail_whenSaveUser_thenThrowsEmailMustNotNullEx() {// whenException exception = assertThrows(IllegalArgumentException.class, () -> userService.saveUser(user));// thenassertNotNull(exception);assertEquals(E_USER_EMAIL_MUST_NOT_BE_NULL, exception.getMessage());}@Test@DisplayName("Exception Test: user is already registered case")void givenRegisteredUser_whenSaveUser_thenThrowsUserAlreadyRegisteredEx() {// givenuser.setEmail(MOCK_EMAIL);Optional<User> savedUser = Optional.of(new User().setEmail(MOCK_EMAIL));doReturn(savedUser).when(userRepository).findByEmail(anyString());// whenException exception = assertThrows(IllegalArgumentException.class, () -> userService.saveUser(user));// thenassertNotNull(exception);assertEquals(E_USER_ALREADY_REGISTERED, exception.getMessage());}@Test@DisplayName("Exception Test: catch case")void givenIncorrectDependencies_whenSaveUser_thenThrowsGeneralSystemEx() {// givenuser.setEmail(MOCK_EMAIL);// whenException exception = assertThrows(IllegalArgumentException.class, () -> userService.saveUser(user));// thenassertNotNull(exception);assertEquals(E_GENERAL_SYSTEM, exception.getMessage());}@Test@DisplayName("Happy Path: find user by email")void givenCorrectUser_whenFindByEmail_thenReturnUserEmail() {// givenOptional<User> savedUser = Optional.of(new User().setEmail(MOCK_EMAIL));doReturn(savedUser).when(userRepository).findByEmail(anyString());// whenOptional<User> user = userService.findByEmail(MOCK_EMAIL);// thenverify(userRepository,times(1)).findByEmail(anyString());assertEquals(savedUser, user);}}UserServiceImpl测试类运行时长为1秒693毫秒 。
文章插图
推荐阅读
- 越住越富的六种房子 买房看风水的十大要点
- 郭晶晶真会生,两女一男三个孩子不但会投胎到豪门,还很会长……
- 十分钟掌握Doris,超越Hive、Elasticsearch和PostgreSQL
- 连爆三个渣男大瓜,她太猛了
- 孕前饮食红榜黑榜大盘点
- 快速掌握 Go 工作区模式
- 掌握流量抑制与风暴控制,让你的业务更上一层楼
- 竹代表哪三个生肖 12生肖哪个是竹子
- 蚵仔煎三个字怎么读 海蛎煎和蚵仔煎的区别
- 一个蚕蛹相当于吃了三个鸡蛋 蚕蛹中间的黑心是什么东西
