2016-03-11 2 views
0

Я пытался получить простые тестовые примеры для работы без успеха. Они просто дает нулевую ошибку указателя: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); 
     } 

    } 
+1

Возможный дубликат [Что такое Исключение нулевого указателя и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) –

+0

, потому что в вашем методе saveUser вы увеличиваете идентификатор объекта пользователя на 1, а затем сохраняете его. поэтому пользователь с id = 0 хранится с id = 1. когда вы пытаетесь получить этого пользователя, который вы передаете 0 в качестве параметра, и метод can not найдет пользователя с 0 id в списке пользователей и возвращает null, следовательно, исключение. –

+0

Вы очень верны! Пожалуйста, переместите этот комментарий к ответам. – Drew1208

ответ

0

Похоже, ваш сервис пользователь является недействительным .. Spring context.xml должен быть там в папке тестов ресурсов. Иначе вам придется издеваться над сайтом пользователя. Используйте насмешливый, чтобы насмехаться и заглушить ответ.

Смежные вопросы