sách gpt4 ai đã đi

java - Mockito 在测试 hibernate 方法时总是返回 NULL

In lại 作者:塔克拉玛干 更新时间:2023-11-02 19:05:15 27 4
mua khóa gpt4 Nike

我有一些 hibernate 方法,当我测试它们时,mockito 总是返回 null 而不是期望值

这是我的 hibernate 方法

@Autowired
private SessionFactory sessionFactory;

public StudentDAO() {

}
public List listStudentDetail() {
String hql = "Select new " + StudentDetail.class.getName() //
+ "(s.studentid,s.name,s.address) " //
+ " from " + Student.class.getName() + " s ";
Session session = this.sessionFactory.getCurrentSession();
Query query = session.createQuery(hql, StudentDetail.class);
List list =null;
list = query.getResultList();
return list;
}

这是我的测试方法

@Mock
SessionFactory sessionFactory;
@Mock
Query query;
@Mock
Session session;
@Mock
List list;
@InjectMocks
private StudentDAO studentDAO ;

// Test get method

@Bài kiểm tra
public void getListStudentTest() {
StudentDetail sd1 = new StudentDetail(1, "A", "X");
Mockito.when(query.getResultList()).thenReturn(list);
Mockito.when(sessionFactory.getCurrentSession()).thenReturn(session);
Mockito.when(session.createQuery(ArgumentMatchers.anyString())).thenReturn(query);
Mockito.verify(sessionFactory.getCurrentSession());
Mockito.verify(session.createQuery(ArgumentMatchers.anyString(),ArgumentMatchers.anyObject() ));
Mockito.verify(query.getResultList());

Assert.assertEquals(sd1, studentDAO.listStudentDetail().get(0));
}

当我运行我的网络应用程序时,studentDAO.listStudentDetail() 正常返回真值,但在测试方法中它总是返回 null

1 Câu trả lời

这里

Assert.assertEquals(sd1, studentDAO.listStudentDetail().get(0));

studentDAO.listStudentDetail() 返回一个模拟列表。您没有模拟它的 .get 方法。因此它默认返回 vô giá trị。您应该修改您的 assertEquals 检查:

Assert.assertEquals(list, studentDAO.listStudentDetail());

(你根本不需要sd1对象)


此外,您没有正确使用 verify。你应该这样做:

Mockito.verify(sessionFactory).getCurrentSession();
Mockito.verify(session).createQuery(ArgumentMatchers.anyString());
Mockito.verify(query).getResultList();

(注意 . 前的右括号)

关于java - Mockito 在测试 hibernate 方法时总是返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297091/

27 4 0
Bài viết được đề xuất: Java 将子类型实例添加到父类(super class)型的集合中?
Bài viết được đề xuất: java - 使用导出的 sklearn 模型时 Android Studio 中的 "Code too large"
Bài viết được đề xuất: java - 升级 Gradle
Bài viết được đề xuất: java - 最少穿过 N 条平行线
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com