【问题标题】:java.lang.NullPointerException when testing CRUD methods using JUnit使用 JUnit 测试 CRUD 方法时出现 java.lang.NullPointerException
【发布时间】:2016-03-11 17:08:23
【问题描述】:

我一直在尝试让简单的测试用例工作但没有成功。他们只是给出一个空指针错误:

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("drew@gmail.com");
    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);
        }

    }

【问题讨论】:

  • 因为在你的 saveUser 方法中你将用户对象的 id 增加 1 然后存储它。因此 id = 0 的用户存储为 id = 1。当您尝试获取该用户时,您将 0 作为参数传递,并且该方法无法在用户列表中找到具有 0 id 的用户并返回 null,因此出现异常。
  • 你说的很对!请将此评论移至答案。

标签: junit spring-boot


【解决方案1】:

看起来您的用户服务为空.. Spring context.xml 需要在测试资源文件夹中。 否则,您将不得不模拟用户服务。 使用模拟来模拟和存根响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    相关资源
    最近更新 更多