【问题标题】:while writing Junit test cases for @post method, i am getting null pointer exception at userService.addUser() mehod. could anyone help here在为 @post 方法编写 Junit 测试用例时,我在 userService.addUser() 方法中遇到空指针异常。有人可以帮忙吗
【发布时间】:2021-08-28 12:57:41
【问题描述】:
public class UserService {
        
        @Autowired
        private UserRepository userRepository;
        
        @Autowired
        private ConverterService converterService;
        public User addUser(UserDto userdto) {
            User convertedUser = converterService.convertToEntity(userdto);
            convertedUser.setUserId(userdto.getUserId());
            convertedUser.setUserName(userdto.getUserName());
            User savedUser = userRepository.save(convertedUser); 
            return savedUser;
        }
    }

//调试userRepository.save(convertedUser)方法时,总是返回null。

下面是我的 UserServiceTest.java 类

@RunWith(SpringRunner.class)
    @SpringBootTest
    public class UserServiceTest {
    
        @Autowired
        private UserService userService;
    
        @Mock
        private ConverterService converterService;
    
        @MockBean
        private UserRepository userRepository;
    
        @Test
        public void addUserTest() {
            UserDto userDto = new UserDto();
            userDto.setUserId("123");
            userDto.setUserName("AB");
            User user = new User("123","ABC");
            Mockito.when(converterService.convertToEntity(new UserDto())).thenReturn(user);
            Mockito.when(userRepository.save(user)).thenReturn(user);
            User user1 = userService.addUser(userDto);
            Assert.assertEquals(user,userService.addUser(userDto));
    
        }
    }

userService.addUser(userDto) 这个方法总是从服务类返回 null。由于以下条件失败: Assert.assertEquals(user,userService.addUser(userDto));

【问题讨论】:

    标签: java spring-boot junit mockito microservices


    【解决方案1】:

    您不应将 null 值传递给 assertEquals 方法。但是你可以这样做;

    Assert.assertEquals(Objects.equals(user,userService.addUser(userDto)),true);
    

    【讨论】:

    • 感谢您的回复。我做到了,但低于错误。 java.lang.AssertionError:预期:false 实际:true
    • 这是预期的情况,您必须关注为什么 user 和 userService.addUser(userDto) 不相等。为什么您的存储库返回 null?,还要确保在 User 类中正确使用了 equals 方法。
    • 谢谢 sgorgulu,现在它可以工作了,问题是我没有覆盖实体类中的 equal 和 hashcode() 方法。
    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多