gpt4 book ai didi

java - 测试 Controller 方法时出现 NullpointerException

转载 作者:行者123 更新时间:2023-11-28 21:32:42 26 4
gpt4 key购买 nike

这是我将要使用 JUnit 和 JMock 测试的 Controller 方法。

public String myMethod(ModelMap model, Principal principal,
@PathVariable MyObject obj) {
if (obj != null) {
Student student = getStudent(principal);
if (check(obj, student)) {
model.addAttribute(student).addAttribute(obj);
return "page";
}
}
return REDIR;
}


private boolean check(MyObject obj, Student student) {
return student.getStudentNumber().longValue() == obj.getStudent().getStudentNumber().longValue();
}

我的测试

final StudentService studentService = context.mock(StudentService.class);

public void test() throws Exception {
ModelMap model = new ModelMap();
final MyObject = new myObject();

context.checking(new Expectations() {
{
oneOf(studentService).getByNumber(SecurityHelper.getStudentNumberOf(Helper.getTestPrincipal()));
will(returnValue(mockStudent));
}
});

controller.myMethod(model, Helper.getTestPrincipal(), obj);
}

运行测试时,我得到一个指向检查方法的 NullPointerExeption。知道那是从哪里来的吗?是因为我缺乏期待吗? Student 和 obj 不是可模拟的接口(interface)。我是新来的。跟踪此类测试错误的最佳方法是什么?

最佳答案

如果我没理解错的话,这是抛出异常的行:

return student.getStudentNumber().longValue() == obj.getStudent()
.getStudentNumber().longValue();

所以异常可能来自几个地方:

  1. studenobj 为空。
  2. student.getStudentNumber() 返回 null。
  3. obj.getStudent() 返回 null
  4. obj.getStudent().getStudentNumber() 返回 null。

对所有这些语句执行 System.out 并查看哪个为空。

关于java - 测试 Controller 方法时出现 NullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13620731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com