NullPointerException в @InjectMock - PullRequest
       14

NullPointerException в @InjectMock

0 голосов
/ 23 апреля 2020
@Service
public class UserServiceImpl  {

@Autowired
private UserRepository userRepository;

public void createUser(User user) {
    userRepository.save(user);
}

public User getUser(long userId) {
    return userRepository.findById(userId).get();
}

public void updateUser(long userId, User user) {
    User userRaw = userRepository.findById(userId).get();
    userRaw.setUserEmail(user.getUserEmail());
    userRaw.setUserName(user.getUserName());
    userRepository.save(userRaw);
}

public List<User> getAllUser() {
    return userRepository.findAll();
}

public void deleteUser(long userId) {
    userRepository.deleteById(userId);
}

}

@RunWith(SpringJUnit4ClassRunner.class)
public class UserServiceImplTest {

@InjectMocks
UserServiceImpl userServiceImpl;

@Mock
UserRepository userRepository;

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
}

private final long USERID = 1l;

@Test
public void getUserTest() {
    userServiceImpl.getUser(USERID);
    verify(userRepository).findById(USERID);
    }
}

Я пытаюсь реализовать junit и mockito. Я получаю исключение нулевого указателя в объекте injectMock.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Вы должны добавить @Autowired при внедрении услуги.

@Autowired
@InjectMocks
UserServiceImpl userServiceImpl;
0 голосов
/ 23 апреля 2020

При использовании @Mock, @InjectMocks, тестовые случаи должны выполняться с использованием MockitoJUnitRunner .

@RunWith(MockitoJUnitRunner.class)

В качестве альтернативы, вы можете запустить свой тестовый класс, включив программу запуска MockitoJUnit программно.

@Before
public void init() {
    MockitoAnnotations.initMocks(this);
}

Во-вторых, когда вы используете макет объекта в тестовом примере, вы действительно определяете свои правила.

when(userServiceImpl.getUser(Mockito.anyLong())).thenReturn(0);
...