【发布时间】:2021-11-13 00:21:17
【问题描述】:
我正在使用 Mockito(不是 powermock)为我的 Hibernate 的谓词类编写测试用例。
我的方法如下-
buildXYZQuery(Root<?> root, Filter filter, CriteriaBuilder cb, Predicate where, String Login) {
Predicate predicate1 = cb.like(cb.upper(root.get("object1")), "VALUE1");
Predicate predicate2 = cb.like(cb.upper(root.get("object1")), "VALUE1");
Predicate predicate3 = cb.like(cb.upper(root.get("object1").get("object2").get("DataMember_Of_Object2_Returning_String_Value")), "VALUE1");
where = cb.and(predicate1, predicate2, predicate3);
return where;
}
对于这种方法,我正在尝试将junit测试用例编写为-
public class HibPaginationTest {
@InjectMocks
HibPagination pagn = new HibPagination();
Root root = new Root() {
@override
public EntityType getModel() { return null; }
@override
public Path get(String s) { return null; }
.....
.....
// all methods from javax.persistence.criteria.Root interface
};
Predicate predicate = new Predicate() {
// all methods from javax.persistence....Predicate
};
CriteriaBuilder cb = new CriteriaBuilder() {
.......
};
@Test
public void buildXYZQueryTest() {
pagn.buildXYZQuery(root, filter, cb, where, "test_user");
}
}
在这里,我的测试用例在尝试执行用于访问嵌套对象 (root.get().get().get()) 的谓词 3 时因 NPE 而失败。我该如何解决这个问题?
【问题讨论】:
-
你是如何定义根对象的?
-
@NareshJ 你好,Naresh,我已经用更多细节编辑了我的查询,以便更好地理解这个场景。
标签: java spring-boot hibernate jpa junit