Я пытался получить простые тестовые примеры для работы без успеха. Они просто дает нулевую ошибку указателя:java.lang.NullPointerException при тестировании методов CRUD с использованием JUnit
java.lang.NullPointerException
Пример:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SpringCrudApplication.class)
public class ServiceTest {
UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
@Test
public void findUserByIdTest() throws Exception {
long id = (long) 0;
User user = new User();
user.setId(id);
user.setAddress("main st");
user.setEmail("[email protected]");
user.setUsername("Drew");
System.out.println("Name: "+user.getUsername()+" ID: "+user.getId()); //this is printing
userService.saveUser(user);
User userTest = userService.findUserById(id);
System.out.println("Username="+userTest.getUsername());
assertEquals("Drew", userTest.getUsername());
}
Я получаю следующий вывод в консоли:
Name: Drew ID: 0
Однако, как только он получает:
userService.saveUser(user);
нулевой указатель.
Вот метод испытывается:
public class UserServiceImpl implements UserService {
private static final AtomicLong counter = new AtomicLong();
private static List<User> users;
static {
users = populateDummyUsers();
}
@Override
public User findUserById(Long id) {
for (User user : users) {
if (user.getId() == id) {
return user;
}
}
return null;
}
@Override
public void saveUser(User user) {
if(user != null) {
user.setId(counter.incrementAndGet());
users.add(user);
}
}
Возможный дубликат [Что такое Исключение нулевого указателя и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) –
, потому что в вашем методе saveUser вы увеличиваете идентификатор объекта пользователя на 1, а затем сохраняете его. поэтому пользователь с id = 0 хранится с id = 1. когда вы пытаетесь получить этого пользователя, который вы передаете 0 в качестве параметра, и метод can not найдет пользователя с 0 id в списке пользователей и возвращает null, следовательно, исключение. –
Вы очень верны! Пожалуйста, переместите этот комментарий к ответам. – Drew1208